我有一个基本问题,我似乎无法弄明白。我正在尝试在AES-256-CBC中生成一个可用于加密/解密数据的随机密钥。
以下是我正在做的事情:
require 'openssl'
cipher = OpenSSL::Cipher::AES256.new(:CBC)
cipher.encrypt
puts cipher.random_key
>> "\xACOM:\xCF\xB3@o)<&y!\x16A\xA1\xB5m?\xF1 \xC9\x1F>\xDB[Uhz)\v0"
这给了我上面的字符串,它看起来不像我过去使用过的键。我对加密非常新,你可能会说,但我想知道我是否需要进一步准备字符串。我在rails中创建了一个快速视图,因此我可以转到/ generate,它将使用随机密钥呈现一个简单的html页面。它甚至不会呈现页面,并抱怨无效的uTF8。我可以让页面显示的唯一方法是首先对Base64进行编码。
我知道我错过了一些愚蠢的东西。任何想法都会很棒。
编辑: 如果我是Base64encode,这就是它的样子。我应该剥离=标志还是什么?
AES-128-CBC
Random Key: 0xdq+IZdmYHHbLC9Uv8jgQ==
Random IV: vp08d/nFGE3R8HsmOzYzOA==
AES-256-CBC
Random Key: BW0wY5fUkcwszV5GIczI+D45eFOz/Ehvw5XdZIavVOQ=
Random IV: D0pXdwQAqu+XSOv8E/dqBw==
感谢您的帮助!
答案 0 :(得分:0)
回答你的问题(引自维基百科):
&#39; ==&#39; sequence表示最后一个组只包含一个 字节,&#39; =&#39;表示它包含两个字节。
理论上,解码时不需要填充字符,因为 可以从Base64的数量计算丢失的字节数 数字。在一些实现中,填充字符是强制性的, 而对于其他人则没有使用它。
对于Ruby和您的用例,答案是:剥离=