没太看懂应用场景和上下文。不过从报错来看应该是个比较经典的编码问题,感觉google以下就会有解决方案。麻烦把报错也粘贴出来
主要我要加密和解密,前端的代码是这样的,怎样用python加密和解密呢?
你直接问相关的前端工程师,或者百度一搜这个加密算法是什么,这明显是调用的相关的加密库。js 有 python 也肯定有的。注释好像也写了,是des加密,就是不知道注释是不是对的。最好是直接合前端确认下。
前端说就这样的逻辑,不知道用python怎么用,网上看了加密与前端加密结果不一样
参考链接:https://stackoverflow.com/questions/40646297/python-des-encryption
截取的内容
use pyDes with python3, here is the demo code:
def des_ecb_encode(source, key):
des_obj = des(key, ECB, IV=None, pad=None, padmode=PAD_PKCS5)
des_result = des_obj.encrypt(source)
return base64.encodestring(des_result)
if __name__ == '__main__':
src = b'cagent=81288128/\\\\/method=tc'
key = b'12341234'
encrypted = des_ecb_encode(src, key)
print('encrypted: ', encrypted)
and it will print
encrypted: b'IGcOAYEQN88F1NFLtBOK23PMeg42F7r8jchYOmglMAs=\n'
一百度pyDes 加解密就搜出来了
import base64
from pyDes import des, ECB, PAD_PKCS5
import base64
from pyDes import des, PAD_PKCS5, ECB
class DcDes:
def __init__(self):
DES_KEY = "test_key" # 默认8位密钥
self.des_obj = des(DES_KEY, ECB, DES_KEY, padmode=PAD_PKCS5) # 初始化一个des对象,参数是秘钥,加密方式,偏移, 填充方式
self.des_obj.setKey("enter your key") # 自定义key,位数不限
def encrypt(self, obj):
des_obj = self.des_obj
secret_bytes = des_obj.encrypt(obj) # 用对象的encrypt方法加密
return base64.b64encode(secret_bytes).decode()
def decrypt(self, secret_bytes):
des_obj = self.des_obj
secret_bytes = base64.b64decode(secret_bytes) # 这里中文要转成字节
obj = des_obj.decrypt(secret_bytes) # 用对象的decrypt方法解密
return obj.decode()
if __name__ == '__main__':
dc_des = DcDes()
res = dc_des.encrypt("12312321")
print(res)
print("解密后")
print(dc_des.decrypt(res))
报错和注释都给你写了,秘钥要求是8位。
建议你要理解一下报错,看一下注释信息。
谢谢老师