AES CBC 암호화: 암호화 결과와 함께 IV를 노출하는 것이 의미가 있습니까(복호화할 때 IV를 쉽게 얻기 위해)?

AES CBC 암호화: 암호화 결과와 함께 IV를 노출하는 것이 의미가 있습니까(복호화할 때 IV를 쉽게 얻기 위해)?

일부 코드 조각을 본 적이 있습니다(예: Ruby).

require 'openssl'

def encrypt_aes_256_cbc(plain_text, encrypt_key)
  cipher = OpenSSL::Cipher::AES.new(256, :CBC)
  cipher.encrypt
  iv = cipher.random_iv
  cipher.key = encrypt_key.ljust(cipher.key_len, '\0').slice(0, 32)
  encrypted = cipher.update(plain_text) + cipher.final
  (encrypted + iv).unpack('H*').first
end

def decrypt_aes_256_cbc(encrypted_text, encrypt_key)
  cipher = OpenSSL::Cipher::AES.new(256, :CBC)
  cipher.decrypt
  raw_data = [encrypted_text].pack('H*')
  cipher.iv = raw_data.slice(raw_data.length - 16, 16)
  cipher.key = encrypt_key.ljust(cipher.key_len, '\0').slice(0, 32)
  cipher.update(raw_data.slice(0, raw_data.length - 16)) + cipher.final
end

이 암호화는 해커가 결과를 얻은 다음 IV를 얻는다고 가정하여 IV를 결과에 노출시킵니다 encrypt_aes_256_cbc. 이는 CBC 모드가 의미가 없다는 의미입니까?

이것이 가능한가?

관련 정보