【问题标题】:Don't understand binary format不懂二进制格式
【发布时间】:2014-01-30 03:33:43
【问题描述】:

我必须在 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 个不同的字符串,但二进制是相等的?

【问题讨论】:

    标签: ruby cryptography padding encryption


    【解决方案1】:

    pack 有一个补零指令:

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

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

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

    【讨论】:

    • 您能否解释一下为什么问题中的代码不起作用?我已经看了几分钟了,但由于我不是 Ruby 程序员,所以我就是不明白。
    • 是的,你说得对!我必须解开字符串。谢谢
    猜你喜欢
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    • 2014-02-06
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-16
    相关资源
    最近更新 更多