Wenn schon unter linux bist, kannst ja /dev/random anzapfen, am besten gleich 4k Bytes auslesen für sha1 vom Passwort. Und base85 ist besser, da mehr druckbare Zeichen enthalten sind, als base64.
dd if=/dev/random count=8 2>/dev/null | sha512sum -b -z | ./base85 e
<~0OZ_F3&kG-3A`X+2)$js@59`L@50Pm2J-AU11E3s0JkRB3Ft$'ARdH)@qIPO@:h2PA2cA*A
n!YQ1cR7#3Fb$W2).$KA2H#"2`*6I2)R'IAn>I11cR=&2DnuR2J+p+A7IMS@q.5MAMc)O@%R
N1cAiRAhZ5(11;jj+=\rC~>
Code:
<~@UV5UA2ZD(1,C^s@PB]N2.9rL0k=cN@q&t,@Q$5+3+=a!@Q._*11E1N0fM'O1Ljm&@kfu"2
E#/%2DA]$AMR\(@50Vt2dnCM@PVCQ0et^t3B1M[1h&=O3At>W0kOlO3AW?CAn<q\0K3E!2eFg
'A7d]2Ai2S'AM>hu+=\rC~>
Wobei base85 in dem Fall ein awk script ist, und das Passwort zwischen den Klammern steht "<~" "~>".
https://sites.google.com/site/danny...lities/base64-and-base85-encoding-awk-scripts
edit:
Mir ist aufgefallen, das ist so auch nicht optimal, weil sha512sum einen Hexadezimalwert ausgibt, aber in ASCII Text, und nicht binär, wie man es für base64 oder ascii85 oder base85 optimal bräuchte, und somit wird das Passwort effektiv nur etwa halb so stark für genutzte Länge, als wenn man base64 von dem Binärwert der sha Summe macht.
siehe dazu:
https://en.wikipedia.org/wiki/SHA-1#Example_hashes
Das Beispiel kann man in linux bash so erzeugen
:
echo -n "The quick brown fox jumps over the lazy dog" | sha1sum | cut -f 1 -d " " | xxd -r -p | base64
Habe ein kleines python3 Programm, das von Standardeingabe binär liest (zB. von /dev/random), und davon binär in die Standardausgabe den SHA1 Wert ausgibt, das wäre optimal für Weitergabe an base64 oder base85 wie oben.
Python:
#!/usr/bin/python3
from hashlib import sha1
import binascii, os
h = sha1()
if __name__ == "__main__":
import sys
line=sys.stdin.buffer.read()
# h.update(bytes(binascii.hexlify(line)))
h.update(bytes(line))
with os.fdopen(sys.stdout.fileno(), "wb", closefd=False) as stdout:
stdout.write(binascii.unhexlify(h.hexdigest()))
stdout.flush()
Die Ausgabe vom oberen Beispiel und für sha512 würde dann so ausschauen (also kürzer!):
Code:
<~\qnpj,<`8J>-]0ebLX+hMbpma.s`"f4M&@mB(99liiJhSH47*i&rW.&93[^q+1.43reC`VI
jX&[oo\/L~>