我有一个我似乎无法弄清楚的基本问题。我正在尝试在 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 编码。
我知道我错过了一些愚蠢的东西。任何想法都会很棒。
编辑:如果我进行 Base64 编码,这就是它的样子。我应该去掉 = 标志还是什么?
AES-128-CBC
Random Key: 0xdq+IZdmYHHbLC9Uv8jgQ==
Random IV: vp08d/nFGE3R8HsmOzYzOA==
AES-256-CBC
Random Key: BW0wY5fUkcwszV5GIczI+D45eFOz/Ehvw5XdZIavVOQ=
Random IV: D0pXdwQAqu+XSOv8E/dqBw==
谢谢您的帮助!