1.利用 Crypto 实现DES加密


from Crypto.Cipher import DES  # pip install pycryptodome
from Crypto.Util.Padding import pad
from binascii import b2a_hex

# 加密函数
def des_encode_hex(key , text , iv=''):
des = DES.new(key=key.encode('utf-8') , mode=DES.MODE_CBC ,
iv=iv.encode('utf-8')) # 参数 key:密钥 mode:模式一般是DES.MODE_ECB
pad_pkcs7 = pad(text.encode('utf-8') , DES.block_size , style='pkcs7') # 选择pkcs7补全
encrypt_aes = des.encrypt(pad_pkcs7) # 把bytes转成16进制
return b2a_hex(encrypt_aes).decode('UTF-8')



if __name__ == '__main__':
key = '12345678'
text = '1'
iv = '87654321'
print(des_encode_hex(key=key , text=text , iv=iv)) # bbf9ad296aa381d6


 

 

2.使用pyDes 实现DES

最近遇到另一种结果 与之对应的Js代码也不太一样

import binascii
# 加密模式 CBC,填充方式 PAD_PKCS5
from pyDes import des, CBC, PAD_PKCS5


def des_encrypt(key, text, iv):
    k = des(key, CBC, iv, pad=None, padmode=PAD_PKCS5)
    en = k.encrypt(text, padmode=PAD_PKCS5)
    # return binascii.b2a_hex(en)
    return en


def des_decrypt(key, text, iv):
    k = des(key, CBC, iv, pad=None, padmode=PAD_PKCS5)
    de = k.decrypt(binascii.a2b_hex(text), padmode=PAD_PKCS5)
    return de


if __name__ == '__main__':
    secret_key = '54367819'   # 密钥
    text = 'CGGG'   # 加密对象
    iv = secret_key           # 偏移量
    secret_str = des_encrypt(secret_key, text, iv)
    print('加密字符串:', secret_str)
    # clear_str = des_decrypt(secret_key, secret_str, iv)
    # print('解密字符串:', clear_str)

 

对应的js

var CryptoJS = require('crypto-js')

function desEncrypt() {
    var key = CryptoJS.enc.Utf8.parse(desKey),
        iv = CryptoJS.enc.Utf8.parse(desIv),
        srcs = CryptoJS.enc.Utf8.parse(text),
        // CBC 加密模式,Pkcs7 填充方式
        encrypted = CryptoJS.DES.encrypt(srcs, key, {
            iv: iv,
            mode: CryptoJS.mode.CBC,
            padding: CryptoJS.pad.Pkcs7
        });
    return encrypted.ciphertext.toString();
}

一般最后 是   return encrypted.toString( )   但是他这里   return encrypted.ciphertext.toString( )  不太懂 先记下来

 

 

 

 

DES 在线加密解密工具:   https://the-x.cn/cryptography/Des.aspx

 

 posted on 2022-12-21 17:30  宁青楼  阅读(2081)  评论(0)    收藏  举报