不懂二进制格式

时间:2014-01-29 14:54:34

标签: ruby cryptography padding encryption

我必须在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 个答案:

答案 0 :(得分:1)

pack有一个零填充指令:

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

至于你的问题,你想要解包一个字符串,而不是打包一个数组:

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