在ruby中,如何使用PKCS5填充进行DES加密

2024-10-04 01:36:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将一些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的。我应该选择哪种算法?在


Tags: 代码importdatautftriplerubyabccbc
1条回答
网友
1楼 · 发布于 2024-10-04 01:36:58

这里有两个问题。首先,不要使用pkcs5_keyivgen,这是一个过时的函数,用于从密码派生密钥和iv。您需要直接在Cipher对象上设置这些:

cipher.key = key
cipher.iv = iv

其次,在Python代码中,键是16字节,这意味着您使用的是two key(或键控选项2)三重DES。Python代码根据使用的键的长度自动确定要使用哪个键。在Ruby OpenSSL绑定中,您需要显式地指定要使用哪个。des-ede3-cbc三键(或键控选项1)。您需要使用des-ede-cbc作为密码名:

^{pr2}$

相关问题 更多 >