【发布时间】:2014-07-17 00:09:01
【问题描述】:
我正在尝试以下操作:
使用 AES 算法和 128 位密钥加密字符串。我被告知要使用的密码模式是带有 PKCS5 填充的 CBC。初始化向量为16字节的00。
这是给我的指示:
使用密钥我需要使用前 16 个字节生成一个 128 位密钥。
读取要以“UTF-8”编码的字符串字节。
使用 AES 算法和您的 128 位密钥加密字符串。请务必使用 CBC 模式和 PKCS5 填充。
将加密字节转换为十六进制字符串。
这是我目前所拥有的:
message = "string to be encoded"
secret = "mysecretkey".encode('UTF-8')
key = secret[0..15]
iv = "/0" * 16
cipher = OpenSSL::Cipher.new('aes-128-cbc')
cipher.encrypt
cipher.key = aes_key = key
cipher.iv = aes_iv = iv
encrypted = cipher.update(message)
encrypted << cipher.final()
我的输出是乱码。我假设这是因为我没有正确转换为十六进制?另外我如何设置PKCS5填充?我做的静脉注射正确吗?还是我完全偏离了轨道?
任何帮助将不胜感激!
【问题讨论】:
标签: ruby-on-rails ruby encryption cryptography