我正在尝试将一些Python代码转换成Ruby。下面是Python代码片段:
# -*- coding: UTF-8 -*-
import pyDes
import base64
des3Key = '1234567887654321'
iv = des3Key[0:8]
data = r'abc'
k = pyDes.triple_des(des3Key,pyDes.CBC,iv,pad=None,padmode=pyDes.PAD_PKCS5)
d = k.encrypt(data)
print base64.b64encode(d)
#q8qN6El3X8A=
我的Ruby代码:
^{pr2}$ruby的结果不等于python的。我应该选择哪种算法?在
这里有两个问题。首先,不要使用
pkcs5_keyivgen
,这是一个过时的函数,用于从密码派生密钥和iv。您需要直接在Cipher
对象上设置这些:其次,在Python代码中,键是16字节,这意味着您使用的是two key(或键控选项2)三重DES。Python代码根据使用的键的长度自动确定要使用哪个键。在Ruby OpenSSL绑定中,您需要显式地指定要使用哪个。
^{pr2}$des-ede3-cbc
是三键(或键控选项1)。您需要使用des-ede-cbc
作为密码名:相关问题 更多 >
编程相关推荐