Yanıtlar:
pwgen , şifre üretme programlarından biridir.
Şahsen, şifre oluşturucuyu kullanmamayı tercih ediyorum, çünkü oluşturulan şifre hatırlaması çok zor, ancak bir taşınabilir çözüm / dev / urandom kullanmak.
Özel karakter içermeyen rastgele şifreler oluşturmak, 10 karakter uzunluğundadır:
$ cat /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 10`
dyxJRKldvp
Bu, / dev / urandom'dan baytları kaparak, tr
komutta belirtilen kalıba uymayanları silerek ve onu 10 karakterle sınırlayarak çalışır head
.
Özel karakterler içeren rasgele şifreler oluşturmak, 10 karakter uzunluğundadır:
$ cat /dev/urandom | tr -dc 'a-zA-Z0-9-_!@#$%^&*()_+{}|:<>?=' | fold -w 10 | grep -i '[!@#$%^&*()_+{}|:<>?=]' | head -n 1
MSF4wj@vP0
Bu, tr
istenmeyen baytları temizledikten sonra biraz farklı bir teknik kullanır , çünkü fikir onu en az bir özel karaktere zorlamaktır. Bu fold
, satırı 10'lu gruplara sarma komutunu kullanarak , ardından grep
yalnızca özel bir karakter içeren satırları almak için çalışır. head
sonra gereksinimleri karşılayan ilk şifreyi alır.
Bu küçük senaryoyu birkaç yıl önce yazdım ve o zamandan beri kullanıyordum. Eğer bir şey varsa, ilginç bir suistimal printf
ve BASH'in maalesef senaryolarda nadiren gördüğüm güzel bir özelliğini kullanıyor typeset
.
#!/usr/bin/env bash
# Released into public domain
# Aaron Bockover, 2005
# http://abock.org
typeset -i length; length=$1
typeset -i rounds; rounds=$2
[ $rounds -lt 1 ] && rounds=1
[ $length -lt 1 ] && {
echo "Usage: $0 <length> [<rounds>]" 2>/dev/null; exit 1;
}
for ((i=0; i < $rounds; i++)); do
for ((j=0; j < $length; j++)); do
set=$(($RANDOM % 20))
if [ $set -le 6 ]; then o=65; l=26; # 35% uppercase
elif [ $set -le 13 ]; then o=97; l=26; # 35% lowercase
elif [ $set -le 17 ]; then o=48; l=10; # 20% numeric
elif [ $set -le 18 ]; then o=58; l=7; # 10% symbolic
elif [ $set -le 19 ]; then o=33; l=15; fi
ord=$(($o + $RANDOM % $l))
printf \\$(($ord / 64 * 100 + $ord % 64 / 8 * 10 + $ord % 8))
done
echo
done
Ayrıca GUI kullanarak, birkaç hoş özelliğe sahip güçlü şifreler oluşturmak için sistem entropisini kullanma seçeneği sunan KeePassX'i de eklerdim . Ayrıca, şifrelerinizi yönetme ve şifreli bir dosyaya kaydetme seçeneği sunar.
KPX şifre üreticisi arayüzü şöyle görünür:
apg
Kolayca hatırlanabilecek bir şifre istiyorsanız, kötü bir seçim değildir.
; apg -m 16 -a 0 -t
ByajNudgolIston9 (Byaj-Nud-gol-Ist-on-NINE)
Af}ockhuecUjrak8 (Af-RIGHT_BRACE-ock-huec-Uj-rak-EIGHT)
IakijKadmomIvgig (Iak-ij-Kad-mom-Iv-gig)
NutIlOsyahodBeef (Nut-Il-Os-ya-hod-Beef)
anMechOybekazell (an-Mech-Oyb-ek-az-ell)
VumushCummAd{fra (Vum-ush-Cumm-Ad-LEFT_BRACE-fra)
Göre unutmayın bu , Ţifrenizin en az 12 karakterden oluşmalıdır.
Rasgele olmayan bir ürün kullanıyorum, ancak tüm saldırı amaçları için yeterince çeşitli ... ana şifre ve diğer şifreler oluşturmak için son geçiş . Ana parolayı şu şekilde oluşturuyorum
echo -n "some seed" | openssl dgst -binary -sha1 | base64 | sed -e 's/.\{4\}/& /g'
ve çıktı
H1sI Wpbj JE2P CdVJ A1qb 9B/e u7M=
Şimdi sadece birkaç bölümden birini seçin ve bir şifre oluşturun, bunları yeniden düzenleyin, biraz dışarıda bırakın, bir karakter ekleyin veya rastgele yapmak için bir karakter ekleyin. Tohumunuzu hatırlayabildiğiniz sürece bunu yeniden oluşturabilir ve şifrenizi geri kazanabilirsiniz (çok fazla değişiklik yapmadığınız sürece)
İşte XKCD tarzı şifreler oluşturmak için bir kerelik komut dosyası . /usr/share/dict/words
kelimelerin çoğu uzun olduğu için bunun için iyi bir sözlük değil, fakat kolayca erişilebilir. Daha güzel şifreler için S / Key One-Time Password kelime listesi gibi kısa kelimeler sözlüğünü kullanabilirsiniz .
dict="/usr/share/dict/words"
max="`wc -l <"$dict"`" \
perl -e '$count=4;
$/=\4; while (<>) {
print unpack('L') % $ENV{max} + 1, qq(\n); last unless --$count
}' /dev/urandom |
while read n ; do
tail -n "+$n" "$dict" | head -1
done
Bir GNOME kullanıcısıysanız ve çeşitli hesaplarınız için şifreleri saklamanız gerekiyorsa, Vahiy şifre yöneticisini deneyebilirsiniz . Yalnızca şifre uzunluğunu ayarlamanız ve harflerin ve rakamların yanı sıra noktalama karakterlerini eklemeyi seçip seçmemenizin temel bir şifre oluşturma özelliği vardır.
Yanılıyorsam düzelt ama: Ben anlaşıldığı kadarıyla, orada hiçbir bilgisayar tamamen rasgele dize ile gelebilir yol. Bu yüzden şu fikre ulaştım [ve tamamen aptalca olmadığını umuyorum]:
Biri 26 taraflı bir zar atarsa, atma şansı, diyelim ki 26: 1:26. Başka bir deyişle: 26 atma şansı yaklaşık% 0,04'tür. Ayrıca, bir zar hafızası ve böcekleri yoktur. Aşağıdaki fikir geldi:
Yazdırılacak Kağıt Modelleri:
Not : Bir Math Pro değilim ve 2600 dergisinde bunu tarif eden bir makaleyi okuduktan sonra bu fikre ulaştım. Sadece temel kavram üzerine kendi fikirlerimin bazılarını ekledim.
Ayrıca : Bunun ' ilk kaba kuvvet şifrenizi kırıcı yazma ' için mükemmel bir örnek olmadığını merak ediyorum . Ancak sorunuz, tartışılmak üzere bu fikri ortaya çıkarmak için bana mükemmel bir neden verdi.
Güçlü şifreler oluşturmak için .zshrc.local dosyama iki takma ad ekledim.
İlk olarak:
alias pw.graph="cat /dev/urandom | tr -dc '[:graph:]' | fold -w 1000 | perl -pe 's/(.)(?=.*?\1)//g' | head -n 5"
Pw.graph yazmanın sonucu, boşluk çubuğu hariç klavyede yazılabilen her karakterden beş satırdır:
/d=|&mRq!g$QaNZ'L;CfEli,D3\)*h-jkerzv?{y"_Ic(0BtxJwF59:@G}KV1X2o>S~[#]s+W%A.<6bpTO^uP7U4HMYn`8
RIdW87{a4O3][?&rTn=m/:Y`_u*hqy2c%s@!ZPM$5to1f-.U9ClK,)'jDi0"pw>EzN^|gX~BSAJk\VFG(H<bx}+Q6#vL;e
s^H@yEo/X$|d?_jw7-n'l>m"Cb\W5.tTe0APB1D!#69[p+(8x}F&~RM`q3Q%vhfOiUZz]ucJk:)*agGV;=NY4{,K2SLrI<
$/t|!s}og5u:X~hcJUyYHf>;l<zDedL`.T*K8]CBSW[(xw+Mm^E3r16b-97%'@jVR{ZG#0p4AP=,I?\n&"a)vqNkQ2iO_F
,7n|^Y\%MpeBqvhI3mE<9zPS/~+sU`4ZoCWl&uxd'ft"kjcOy0X!{a-T_6RKiVg5Hb21D)w>@*N8;A[(rLG=$Q:.#]FJ?}
İkincisi:
alias pw.alnum="cat /dev/urandom | tr -dc '[:alnum:]' | fold -w 1000 | perl -pe 's/(.)(?=.*?\1)//g' | head -n 5"
Pw.alnum yazmanın çıktısı, hem büyük hem küçük harf ile yazdırılabilir her harf ve sayıdır:
E6wgCfVBbXjyzYQ8USKl79LqPih0e5mvGrNHd3osaW2OxkJ1RM4nFTtcuZIpDA
GTvQON1dsZSpJmegBMK6bqnEciU7k0AoV2H4Wh53zr9YRfLlDxywXItu8CjPFa
6u1Db9MfyBApZdU7gqoV2PGwH5LcxWi3JNj8nkQCIThezSlYEXsOtrmF04KvaR
VFrsGwI9yAmabEnlRTKgZO23vUq4f6LHkzQP7tMjNW8ph1exuDoBCXSd50JciY
G3r6Em5tlfjQARJx9gWHes7bCVwkzcP48KaSIXyUFBMLqT0op1uDNdih2nYZOv
Genellikle pw.graph kullanır ve çizginin rastgele bir kısmını kopyalarım. Bazı şifreler sembollere izin vermez, bu yüzden pw.alnum'un bir kısmını kullanırım.
Bu bir .html dosyası olarak kaydedilmiş kullanın:
<script>
var keylist="abcdefghijklmnopqrstuvwxyzABCEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*_"
var temp=''
function generatepass(plength){
temp=''
for (i=0;i<plength;i++)
temp+=keylist.charAt(Math.floor(Math.random()*keylist.length))
return temp
}
function populateform(enterlength){
document.pgenerate.output.value=generatepass(enterlength)
}
</script>
<form name="pgenerate">
<input type="text" size=32 name="output">
<input type="button" value="Generate Password" onClick="populateform(this.form.thelength.value)"><br />
<b>Password Length:</b> <input type="text" name="thelength" size=3 value="32">
</form>
[:print:]
için de kullanabilirsiniz . O zaman sorun klavyenizdeki semboller olacak ...tr
tr -dc '[:print:]'