0
나는 레일 3.2을 사용하고 있는데 AES-CBC를 사용하여 암호화 뭔가를 위해 pbkdf2_hmac_sha1 기능에서 키와 IV를 생성하기 위해 노력하고있다 256OpenSSL :: PKCS5.pbkdf2_hmac_sha1이 다른 길이의 키를 생성하는 이유는 무엇입니까?
내가 그것을 생성하는 데 사용하는 코드는 다음과 같습니다
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 바이트 여야 함)가 16 바이트가 아닌 15 바이트임을 알게되었습니다.
예를 들어 salt = "lzbH78AwVK7U1eo-ephK6A"인 경우 IV = "604ff394b52e79255fa35b081684b0"(15 바이트 길이)를 생성합니다.
누군가 내가 뭘 잘못하고 있는지 알 수 있습니까?
답변 감사합니다! 문자열에서 '\ n'을 실제로 제거했지만 내부 '\ n'도 제거했습니다. – MarcosCunhaLima