首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >与使用CryptoJS的JS DES加密等效的Python3代码

与使用CryptoJS的JS DES加密等效的Python3代码
EN

Stack Overflow用户
提问于 2020-11-01 02:21:09
回答 1查看 173关注 0票数 0

我有一个使用CryptoJS的js DES加密代码,如下所示:

代码语言:javascript
运行
复制
const CryptoJS = require('crypto-js');

function encryptByDES(message, key) {
        var keyHex = CryptoJS.enc.Utf8.parse(key);
        var encrypted = CryptoJS.DES.encrypt(message, keyHex, {
          mode: CryptoJS.mode.ECB,
          padding: CryptoJS.pad.Pkcs7
        });
        return encrypted.toString();
      }

如果输入为message="123456789", key="123456abcdefghijklmnopqrstuvwxyz",则输出为J6cwLeYoidP5U1V6MT67Ig==

我想知道代码的Python3版本。我试用了一下PyCrytodome (我不太理解这个包),最近的代码如下:

代码语言:javascript
运行
复制
from Crypto.Util.Padding import pad, unpad
from Crypto.Cipher import DES
from Crypto.Random import get_random_bytes
import binascii

data = b'123456789'
key = b'123456abcdefghijklmnopqrstuvwxyz'
iv = get_random_bytes(16)
# below line triggers error
cipher1 = DES.new(key, DES.MODE_CFB, iv)
ct = cipher1.encrypt(pad(data, 16))
print(binascii.b2a_base64(ct))

错误是

代码语言:javascript
运行
复制
ValueError: Incorrect DES key length (32 bytes)

请帮帮我。

EN

Stack Overflow用户

回答已采纳

发布于 2020-11-01 03:26:41

基于Topaco的建议,它终于起作用了,代码如下:

代码语言:javascript
运行
复制
data = b'123456789'
# the next cdefghijklmnopqrstuvwxyz is no needed
key = b'123456ab'
cipher = DES.new(key, DES.MODE_ECB)
ct = cipher.encrypt(pad(data, 8))
print(binascii.b2a_base64(ct))

仅供参考。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64625070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档