2013-12-11 6 views
5

Wenn ich openssl rand verwende, um eine zufällige Zeichenfolge zu generieren, warum hat es immer ein = am Ende?zufällige Zeichenfolge von openssl generiert ist nicht so zufällig.

Wenn ich die Anzahl der Bits auf 16 reduziere, bekomme ich am Ende immer zwei gleich (==). Ich frage mich, warum es so passiert. Mann

zum Beispiel in einem Macbook läuft OS X Einzelgänger

$ Darwin aria.local 13.0.0 Darwin Kernel Version 13.0.0: Thu Sep 19 22:22:27 PDT 2013; root:xnu-2422.1.72~6/RELEASE_X86_64 x86_64 
$ for i in $(seq 1 10) 
for> do 
for> openssl rand -base64 32 
for> done 

dDzk7B6SrcMnpkO2LLM4TaWKMjzBXHj1CmLO4t0HXdo= 
QtP2kxQBg+yOCmowvEDWNdrSLobYyeXRz6HLDq3Q6rA= 
iRmlr1JxRYjVGq3zkX9jgAoSAbu1F2Wm6CRJ9ZvYCR0= 
Z/Wg//Z4Xjpzl3/ve87D2Pyk+dUgm6XHpFpyyeGXJKw= 
XAVdp2B0RJlPCYRBBs3Q+C8X8aEbLQgXgXo5bhZkn8s= 
eu8JcAwupYrX7GPfVnihTKXbzSsRYyW8VUWi+TN8oYA= 
ZHPIj9PgiOi2SPwfrO4nKH1gIFEXlgXM320yDdpOelw= 
7zjdIlSDT2lYiUziGx4Nc+uhoAlfTQKnXW+wB5omG6M= 
nu+QKhD50dE6EQqCD56sPzMSARWuqi2d39UVtTyk0+w= 
Wd4xQ/Eh1lnCiSn9cds4/mRc3FTEunhvrGskl3rJwZ4= 

ich dies,

ich besitze in einer debian-Box wiederholt
$ uname -a 
Linux ip-10-229-17-26 3.2.0-4-amd64 #1 SMP Debian 3.2.51-1 x86_64 GNU/Linux 
$ for i in $(seq 1 10) 
> do 
> openssl rand -base64 32 
> done 

pq+imMSMaXg2qW25d+/QCh3fVv/QevgdOXYZc4UlDRk= 
lDm4Rno9jUikYOd0II225J97dExqLs4yl2gDSRDrafU= 
QyYGkx1tgEWOiAmK4fTdbsnDPcfhjh3WejcBr1JdRlE= 
P9RRi6JDo0/cWVXtReDJ6lA0XKiT9CB8bMePl7vMH2U= 
z/TSy0qAfijl9mCKjxGsZfJySnbqGO3ML2/QYwsent8= 
zLjDTakHyp6cJn16kKuTeQLY3azVuA/gTJ5XZshoahY= 
uVxA/YweYs4HFxYa+3aJG3c5V0wFNmX+6VjZwjgbr8Q= 
7Lx4W6t4GkfoZez3pspOVop2lL1KuTQgGn9KJtaWU44= 
OF5DfOP4c/V+WmxvBpS5QRyGd2j+cqoDKUkwlTd1T0I= 
2ANn1T07mmECnmzOgLDMjJvU/VrRVWbkCf6qgBQpg3A= 

Antwort

6

Die "=" und/oder „== "kommt von der Basis 64 Padding. Die "==" und/oder "=" Sequenz zeigen an, dass die letzte Gruppe nur 8 bzw. 16 Bits enthielt.

Werfen Sie einen Blick auf diese wikipedia post.

und eine Kopieren/Einfügen von oben:

Wenn Text Base64 Decodierung vier Zeichen typischerweise umgewandelt werden zurück zu drei Bytes. Die einzigen Ausnahmen sind, wenn Füllzeichen vorhanden sind. Ein einzelnes '=' zeigt an, dass die vier Zeichen nur zwei Bytes nach dekodieren, während '==' anzeigt, dass die vier Zeichen nur zu einem einzigen Byte dekodieren.

+0

Ehrfürchtig. Vielen Dank :) –

Verwandte Themen