python3使用pyDes模块实现Java DES加密

本文介绍如何在Python3中利用pyDes模块来实现与Java环境下的DES加密兼容,以配合MQTT消息的加密传输。文章提供Java和Python的源码示例,并指导安装pyDes库。

背景:

项目的MQTT传送的消息经过DES加密,在测试过程中,为了实现大批量模拟数据传输,编写工具。因为对Java不熟悉,故选择python。

源码

Java

private static byte[] encrypt(byte[] data) {
        try {
            byte[] key = secretKey.getBytes();
            IvParameterSpec iv = new IvParameterSpec(key);
            DESKeySpec desKey = new DESKeySpec(key);
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
            SecretKey securekey = keyFactory.generateSecret(desKey);
            Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
            cipher.init(Cipher.ENCRYPT_MODE, securekey, iv);
            return cipher.doFinal(data);
        } catch (Throwable e) {
            e.printStackTrace();
        }
        return null;
    }

python

首先需要pip install pydes模块

然后运行下面代码即可

#-*- coding:utf-8 -*-
import sys
import base64
from pyDes import *
from importlib import reload
reload(sys)

registration = b"2 00:00:00:00:00:00 mqtt-client ep=00:00:00:00:00:00&ip=192.168.1.1 xxxx>"
deregistration = b"1 00:00:00:00:00:00  mqtt-client"
KEY = b"test_key"    #Key
IV = KEY    #
k = des(KEY, CBC, IV, pad=None, padmode=PAD_PKCS5)
#encrypt
enRegist = k.encrypt(registration)
print(base64.b64encode(enRegist))#转base64编码返回
enDeregist=k.encrypt(deregistration)
print(base64.b64encode(enDeregist))
#print("d is: ", d)
#decrypt
#print("Decrypted: %r" % k.decrypt(d))

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值