Documente Academic
Documente Profesional
Documente Cultură
urmare
numerele generate sunt deterministe ), dar algoritmul de generare amesteca suficient
de bine numerele pentru ca sirul de numere sa par aleator. In fiecare moment
generatorul are asociat o
stare intern .Starea intern este o valoare dintr-o multime arbitrar suficient de mare.
Acest
numar este obtinut prin aplicarea unui algoritm care modifica starea interna pentru ca
urmatorul
numar sa nu aiba aceeasi valoare. Daca acest algoritm amesteca destul de bine bitii,
sirul pseudo
-aleator are proprietatea de a fi un numar cu adevarat aleator, desi multimea stariilor
interne este
finit si la un moment dat numerele se vor repeta datorita periodicitatii.
Este foarte dificil sa creezi cu adevarat un numar aleator intr-un sistem
computerizat.
Problema este repetabilitatea si predictibilitatea numarului. O metoda foarte populara
de
generare automata a parolelor pseudo aleaatoare, este utilizand o sursa reala de date
aleatoare.
Multe sisteme UNIX ofera un modul de kernel, / dev / random care utilizeaza sistemele
de
evenimente (intrerupe traficul in retea, etc), ca o sursa de entropie pentru a produce
date reale
aleatoare. De asemenea in exemplul de mai jos pentru generarea unui numar pseudoaleator s-a
folosit /dev/urandom. Intre cele doua dispozitive de generare aleatoare /dev/random si
/dev/urandom exista o diferenta constand in faptul ca /dev/random genereaza numere
pseudoaleatoare de inalta calitate generand biti aleatori pana la o limita stabilita, si ea
aleatoare, pe
cand /dev/urandom nu are aceast limitare.
Exemplu:
echo `</dev/urandom tr -dc A-Za-z0-9 | head -c8`
head -c8 alege primele 8 caractere aleatoare pentru formarea unei parole
pseudoaleatoare
/dev Director pentru dispozitive speciale
Exemplul 1: Crearea unei parole pseudo-aleatoare de tip intreg in functie de criteriile
din meniu (prin utilizarea functiei RANDOM):
#!/bin/bash
echo Va rugam sa selectati o criterie de generare a parolei pseudo-aleatoare de tip
numeric
echo 1) Un numar pseudo-aleator intre 1 si o limita superioar aleasa
echo 2) Un numar pseudo-aleator mai mare decat o valoare aleasa
echo 3) Un numar pseudo-aleator compus din suma a 10 numere pseudo-aleatoare
Exemplul 4: Generarea unei parole pseudo-aleatoare din fisierul creat. (unde fisierul
contine pe fiecare linie in parte numere, litere si caractere ).
Exemplu continut fisier : 1 2 3 4 5 6 7 8 9 0 a b c d e f g h I j l m n o p r s # $ % ^
&*(^~|/
Algoritmul consta in alegerea aleatoare a unei linii din fisier deci implicit al unui
caracter, de un numar de pasi egal cu lungimea parolei dorite de utilizator.
Este de preferat stergerea liniilor nule din fisier inainte de generarea parolei
#!/bin/bash
#fisierul creat se numeste tmp.txt si contine pe fiecare linie cate un caracter
FILE=tmp.txt
# stergerea liniilor nule
sed '/^$/d' $FILE > tt
mv tt $FILE
password= #intializarea variabilei password cu valoarea nula
echo dimensiunea parolei dorite
read dim
i=1
while [ $i le $dim ]
do
random_line=$(cat $FILE | sort --random-sort | head -n 1)
password=$password$random_line
i=`expr $i + 1` #incrementarea contorului i
done
echo $password
#!/bin/bash
MAXSIZE=12 #reprezinta dimensiunea parolei, dimensiune ce poate fi oricand
modificata
RANDOM=$$
array=(
qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASD
F G H J K L Z X C V B N M 1 2 3 4 5 6 7 8 9 0 \! \@ \# \$ \% \^ \& \* \( \)
\! \@ \# \$ \% \^ \& \* \( \) \! \@ \# \$ \% \^ \& \* \( \) \! \@ \# \$ \%
)
# MODNUM este folosit pentru a pastra numerele aleatoare in dimensiunea multimii
MODNUM=${#array[*]}
i=0 # un contor ce pastreaza numarul de caractere generat in parola
while [ $i -lt $MAXSIZE ]
do
index=$(($RANDOM%$MODNUM))
password=${password}${array[$index]}
let i+=1 #incrementare contor
done
echo Parola este $password