首页 > 编程语言 >python 实现des加密

python 实现des加密

时间:2022-09-07 17:59:07浏览次数:81  
标签:DES 加密 python text self des iv key data

import base64
from Crypto.Cipher import DES


class DESCrypt:
    def __init__(self, key, mode, iv):
        self.key = key  # 密钥
        self.mode = mode  # 模式
        self.iv = iv  # 初始化向量

    def encrpyt(self, text):
        '''加密'''

        num = DES.block_size - len(text) % DES.block_size  # 需要填充的字符个数
        text_pad = (text + num * chr(num)).encode('utf-8')  # 填充后的字节串
        crpytor = DES.new(self.key, self.mode, self.iv)
        encrypt_data = crpytor.encrypt(text_pad)  # 对数据进行加密
        return base64.b64encode(encrypt_data).decode()

    def decrypt(self, text):
        '''解密'''

        data = base64.b64decode(text.encode())
        crpytor = DES.new(self.key, self.mode, self.iv)
        decrypt_data = crpytor.decrypt(data)  # 对数据进行解密
        res = decrypt_data[:-decrypt_data[-1]].decode()  # 去除多余字符
        return res


if __name__ == '__main__':
    # key = random._urandom(8) 可以利用random模块随机生成
    # key = b'C\xc5\xa0\x04!\xe3\xd59'  # 密钥,固定8个字节长度
    key = b'sync_key'  # 密钥,固定8个字节长度
    mode = DES.MODE_CBC
    iv = b'\x9a\xf8\xad\xeb.\xb7B\xe1'  # 初始化向量,固定8个字节长度
    des = DESCrypt(key, mode, iv)
    text = input('请输入需要DES加密的数据:')
    en_data = des.encrpyt(text)
    print('%s 经过加密得到:%s' % (text, en_data))
    de_data = des.decrypt(en_data)
    print('%s 经过解密得到:%s' % (en_data, de_data))

标签:DES,加密,python,text,self,des,iv,key,data
From: https://www.cnblogs.com/hanfe1/p/16666668.html

相关文章

  • python各种时间的转换
    importtime,datetime#1662541290print(int(time.time()))t=datetime.datetime.now()#2022-09-0717:01:30.954448print(t)#2022-09-0717:03:09print(t.......
  • Python简洁语法笔记
    defaultdict需要构造类似{k1:{v11,v12,v13,...},k2:{v21,v22,v23,...},...}结构的数据时,可以用collections.defaultdict:fromcollectionsimportdefaultdict......
  • 交叉编译移植Python到arm架构下的Linux系统
    参考:https://blog.csdn.net/weixin_41922484/;https://blog.csdn.net/qq_28351465/article/details/54406180;  https://cloud.tencent.com/developer/articl......
  • python数据类型之字典Dictionary
    1.python字典字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过......
  • python 将print内容打印到文件中
    python中print内容打印到文件中importsysfile=open("502log.txt",'a')sys.stdout=fileprint(time.asctime(),"开始请求。。。。。")file.close()这里将prin......
  • 这个Python读取文件的方法,堪称天花板级别...
    前言嗨喽,大家好呀~这里是爱看美女的茜茜呐又到了学Python时刻~今天咱们来了解一下fileinput。说到fileinput,可能90%的码农表示没用过,甚至没有听说过。这不奇怪,因......
  • python中index()、find()方法
    python中index()、find()方法,具体内容如下:index()方法检测字符串中是否包含子字符串str,该方法与pythonfind()方法一样,只不过如果str不在string中会报一个异常。影响......
  • 【Python】 map() 函数
    map()函数map(function,iterable,...)>>>importmap#计算平方>>>list(map(lambda:x:x**2,[1,2,3,4,5]))#使用lambda匿名函数[1,4,9,16,25]#提供了两个......
  • python3基础语法2
    Python3.0在设计的时候没有考虑向下兼容。官方宣布,2020年1月1日,停止Python2的更新。编码默认情况下,Python3源码文件以 UTF-8 编码,所有字符串都是unico......
  • python中divmod是什么意思?
    python中divmod()是一个内置函数。pythondivmod()函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a//b,a%b)。在python2.3版本之前不允许处理复数......