python中的加密算法 -- MD5加密--DES加密

MD5加密算法

MD5消息摘要算法,属Hash算法一类。MD5算法对输入任意长度的消息进行运行,产生一个128位的消息摘要。

不可逆性
每个人都有不同的指纹,看到这个人,可以得出他的指纹等信息,并且唯一对应,但你只看一个指纹,是不可能看到或读到这个人的长相或身份等信息。

特点
1、 压缩性:任意长度的数据,算出的MD5值长度都是固定的。
2、 容易计算:从原数据计算出MD5值很容易。
3、 抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
4 、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

# md5加密
import hashlib
str = 'hello'
hash = hashlib.md5()
hash.update(str.encode('utf-8'))
print(hash.hexdigest())

在这里插入图片描述

DES加密算法

加密原理

DES 使用一个56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES 使用 16 个循环,使用异或,置换,代换,移位操作四种基本运算。

# DES加密
from Cryptodome.Cipher import DES


key = b'abcdefgh'  # 密钥 8位或16位,必须为bytes
def pad(text):
    # 加密文本必须为8的倍数
    while len(text) % 8 != 0:
        text += ' '
    return text

des = DES.new(key,DES.MODE_ECB)
text = 'hello world'
data = pad(text)
en = des.encrypt(data.encode('utf-8'))
print(en)
plain = des.decrypt(en).decode().rstrip('')
print(plain)

在这里插入图片描述

你可能感兴趣的:(python,加密,Python,DES,MD5)