要求:
我有一个Ruby on rails应用程序,我需要执行以下操作。
以下字符串应使用3DES算法和工作密钥进行加密。ABJGTU9的加密值将为vV51P0OGXt0=
工作密钥为A5157A0D77B24AEA868AD73288366826
本文中提到的3DES算法对数据进行加密的步骤如下: i.使用密钥的左半部分,使用CBC加密方式和PKCS7填充对数据进行加密。二、采用CBC加密方式,使用密钥的右半部分解密数据,无需填充。三、采用CBC加密方式,使用密钥的左半部分进行数据加密,无需填充。
我尝试了以下article,这就是我所做的,我的输出是"hsYUuA/Mo6A=\n" is vV51P0OGXt0=
cipher = OpenSSL::Cipher::Cipher.new('DES-EDE3-CBC')
cipher.encrypt # Must be called before anything else
# Generate the key and initialization vector for the algorithm.
# Alternatively, you can specify the initialization vector and cipher key
# specifically using `cipher.iv = 'some iv'` and `cipher.key = 'some key'`
# cipher.pkcs5_keyivgen('SOME_PASS_PHRASE_GOES_HERE')
key = Digest::MD5.base64digest('A5157A0D77B24AEA')
cipher.key = key
data = "ABJGTU9"
output = cipher.update(data)
output << cipher.final
output
end我不确定我是不是走对了路。
发布于 2020-04-02 22:05:12
问题中提及的方案有很多地方是错误的:
默认情况下,OpenSSL已经使用PKCS#7填充进行填充,因此没有理由为此做任何特殊的事情。
CBC要求使用相同密钥的每个加密操作都需要一个唯一的、不可预测的IV,这似乎是所描述的方案中所缺少的。
https://stackoverflow.com/questions/60965029
复制相似问题