Python pyDes模块和Bytes和Str相互转换

本文介绍了在使用Python pyDes模块进行数据加密时,如何进行Bytes和Str之间的转换。重点讨论了通过.decode('raw_unicode_escape')进行Bytes到Str的解码,以及使用.encode('raw_unicode_escape')进行Str到Bytes的编码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天刚好测试数据加密功能,使用的是 pyDes 模块,至于加密逻辑的话可以自行百度,其他博主有写说明!

Q:此次主要记录如何将Bytes字符转为Str字符?

A:调用 .decode('raw_unicode_escape') 编码  或者  .encode('raw_unicode_escape') 解码

import pyDes, binascii


class DES:
    # 初始化key
    def __init__(self, key):
        self.key = key.encode("utf8")

    def des_encrypt(self, s):
        """
        DES 加密
        :param s: 原始字符串
        :return: 加密后字符串,16进制
        """
        secret_key = self.key
        k = pyDes.des(secret_key, pyDes.triple_des, pad=None, padmode=pyDes.PAD_PKCS5)
        en = k.encrypt(s.encode("utf8"), padmode=pyDes.PAD_PKCS5)
        return binascii.b2a_hex(en)

    def des_descrypt(self, s):
        """
        DES 解密
        :param s: 加密后的字符串,16进制
        :return:  解密后的字符串
        """
        secret_key = self.key
        k = pyDes.des(secret_key, pyDes.triple_des, pad=None, padmode=pyDes.PAD_PKCS5)
        de = k.decrypt(binascii.a2b_hex(s), padmode=pyDes.PAD_PKCS5)
        return de


des = DES('12345678')  # 秘钥一定是8个字节,多于少于都会报错

a= {'code':0,"msg":"Success","data":[{'id':1,"IP":"192.168.1.12"}]} # 待加密的数据

print(des.des_encrypt(str(a))) #执行加密方法,将源数据转为Str类型
>>>b'0cc275c6d2c2ace111deec10e51e84bd1239b27db608a1304e781a605bb4b2a3d31ebd5d947d7f947eee12328c6270d1b583d34797eb941772661c421d782fc59992ca6f4f01d738feb959b7d4642fcb'

print(type(des.des_descrypt(des.des_encrypt(str(a)))),des.des_descrypt(des.des_encrypt(str(a)))) #执行解密方法,因为解密后的数据依旧是Bytes类型
>>> <class 'bytes'> b"{'code': 0, 'msg': 'Success', 'data': [{'id': 1, 'IP': '192.168.1.12'}]}"

print(type(des.des_descrypt(des.des_encrypt(str(a))).decode('raw_unicode_escape')),des.des_descrypt(des.des_encrypt(str(a))).decode('raw_unicode_escape')) # 通过 .decode('raw_unicode_escape') 编码转为Str
>>> <class 'str'> {'code': 0, 'msg': 'Success', 'data': [{'id': 1, 'IP': '192.168.1.12'}]}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值