我正在使用 Rails 3.2 并试图从pbkdf2_hmac_sha1函数生成密钥和 IV,以便使用 AES-CBC 256 对某些内容进行加密。
我用来生成它的代码是:
require "openssl"
require "base64"
require "digest"
require "securerandom"
@chave = "fd5d148867091d7595c388ac0dc50bb465052b764c4db8b4b4c3448b52ee0b33df16975830acca82"
cipher = OpenSSL::Cipher.new("AES-256-CBC")
key_iv = OpenSSL::PKCS5.pbkdf2_hmac_sha1(@chave, salt, 2000, cipher.key_len+cipher.iv_len)
key = key_iv[0, cipher.key_len]
iv = key_iv[cipher.key_len, cipher.iv_len]
我使用 SecureRandom.urlsafe_base64 生成随机盐,并注意到有时当我使用一些盐时,IV 长度(应该是 16 个字节)是 15 个字节而不是 16 个字节。
例如,如果你有一个 salt = "lzbH78AwVK7U1eo-ephK6A",它会生成一个 IV = "604ff394b52e79255fa35b081684b0"(15 字节长)。
有人可以知道我做错了什么吗?