2013-12-11 5 views
5

जब मैं एक यादृच्छिक स्ट्रिंग उत्पन्न करने के लिए openssl रैंड का उपयोग करता हूं, तो यह हमेशा एक = अंत में क्यों होता है?openssl द्वारा उत्पन्न यादृच्छिक स्ट्रिंग इतना यादृच्छिक नहीं है।

यदि मैं बिट्स की संख्या को 16 तक कम करता हूं तो मुझे हमेशा अंत में दो बराबर (==) मिलता है। मैं सोच रहा हूं कि ऐसा क्यों होता है। आदमी

एक मैकबुक में उदाहरण के लिए

चल ओएस एक्स आवारा

$ 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= 

मैं एक डेबियन बॉक्स मैं खुद में इस दोहराया,

$ 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= 

उत्तर

6

"=" और/या "== "आधार 64 पैडिंग से आ रहा है। "==" और/या "=" अनुक्रम इंगित करता है कि अंतिम समूह क्रमशः केवल 8 या 16 बिट्स था।

इस wikipedia post पर एक नज़र डालें।

और से ऊपर एक कॉपी/पेस्ट:

जब Base64 पाठ डिकोडिंग, चार अक्षर आम तौर पर वापस बदल रहे हैं तीन बाइट्स के लिए। केवल अपवाद हैं जब पैडिंग वर्ण मौजूद हैं। एक एकल '=' इंगित करता है कि चार वर्ण केवल दो बाइट्स तक डीकोड करेंगे, जबकि '==' इंगित करता है कि चार वर्ण डीकोड केवल एक बाइट तक होंगे।

+0

बहुत बढ़िया। धन्यवाद :) –

संबंधित मुद्दे