2014-01-29 24 views
1

我必須在OpenSSL中用「零填充」加密消息。 我已經在這裏閱讀(Use Zero Padding in OpenSSL?),如果我想要一個「零填充」,我必須添加自己0.所以,我們走了。不明白二進制格式

我試圖填充「A」消息爲例。但有一件事我不明白。

["a"].pack("b*").each_byte { |b| printf("%08b", b) } 
    => "00000000" 
    ["c"].pack("b*").each_byte { |b| printf("%08b", b) } 
    => "00000000" 

爲什麼結果是相同的? 「a」和「c」是2個不同的字符串,但二進制是相等的?

回答

1

pack具有零填充一個指令:

["a"].pack("a2") 
#=> "a\x00"` 

至於你的問題,你想解開一個字符串,而不是打包數組:

'a'.unpack('b*') 
#=> ["10000110"] 
'c'.unpack('b*') 
#=> ["11000110"] 
+0

你能不能也解釋了爲什麼代碼在問題內不起作用?我一直在看它幾分鐘,但由於我不是一個Ruby程序員,我只是不明白它。 –

+0

是的,你是對的!我必須解開字符串。謝謝 – elhostis