【发布时间】:2019-09-30 23:29:24
【问题描述】:
我正在与一个 API 交互,该 API 要求我在 CBC 模式下使用 AES-128 加密某些内容。
他们说对于密钥和 IV,我需要使用他们给我的字符串的 16 字节 MD5 哈希。
我用谷歌搜索了一段时间,看起来所有 MD5 都是 16 字节,为什么这不起作用?
key = Digest::MD5.hexdigest(temp_token)
cipher = OpenSSL::Cipher::AES.new(128, :CBC)
cipher.encrypt
cipher.key = key # ArgumentError: key must be 16 bytes
cipher.iv = key # ArgumentError: iv must be 16 bytes
encrypted = cipher.update(joined_params) + cipher.final
Base64.urlsafe_encode64(encrypted)
【问题讨论】:
-
如果他们的外部服务实现如此糟糕,想象一下他们的内部系统实现有多糟糕...... 颤抖......
标签: ruby-on-rails ruby encryption openssl ruby-on-rails-5