2
我有一个基本问题,我似乎无法弄清楚。我试图在AES-256-CBC中生成一个可用于加密/解密数据的随机密钥。Ruby OpenSSL AES生成随机密钥
下面是我在做什么:
require 'openssl'
cipher = OpenSSL::Cipher::AES256.new(:CBC)
cipher.encrypt
puts cipher.random_key
>> "\xACOM:\xCF\[email protected])<&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==
感谢您的帮助!
为什么你会显示所有的东西在网页上的加密密钥? Base64没问题,如果你需要安全地往返钥匙。 – 2012-11-27 18:55:19
这不是一个永久的解决方案,并且该页面仅在开发中,未发布。除了每次渲染页面以外,还会生成一个随机密钥,除此之外,任何人都可以使用这个密钥来查看我正在使用的加密库。我只是想生成一个密钥! Base64将两个等号添加到密钥的末尾。我是否将这些内容包含在我将要使用的密钥中?或者我剥去那些?我用过的其他键(已经为我生成)从未包含等号。谢谢回复! – Sean
关键是您的初始原始字节序列。你base64编码它,以避免转移它的问题。不要触摸=。它是字符串的一部分。要使用密钥,您必须反转编码,即解码base64。 – 2012-11-27 19:31:34