加密算法(python实现)

本文详细介绍了Python中实现的几种加密算法,包括对称加密的DES、3DES和AES,非对称加密的RSA,以及哈希算法的MD5和SHA。文章探讨了这些算法的特点、安全性以及在实际应用中的使用场景,对于理解加密原理和加强数据安全有重要作用。
摘要由CSDN通过智能技术生成

加密算法

一,对称加密

1.0,简介

对称加密是指 数据加密解密 使用相同的密钥。,数据的加密

  • 主要功能:通常用于保证数据的机密性。

  • 常用的加密算法:

    • DES: Data Encryption Standard,秘钥长度为56位,2003年左右被破解--秘钥可以暴力破解。
    • 3DES: DES的改进版本。
    • AES: Advanced Encryption Standard,支持的秘钥长度包括 128bits,192bits,258bits,384bits,512bits。

    ※ :密钥越长,加密和解密的时间越长

1.1,DES

特点:密钥很短,很容易被破解

简介:

DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准。

DES是一个分组加密算法,典型的DES以64位为分组对数据加密,加密和解密用的是同一个算法。

DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data为8个字节64位,是要被加密或被解密的数据**

密钥长64位,密钥事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位,使得每个密钥都有奇数个1),对64位二进制数据块进行加密,分组后的明文组和56位的密钥按位替代或交换的方法形成密文组。每次加密对64位的输入数据进行16轮编码,经过一系列替换和移位后转换成完全不同的64位输出数据。

import binascii
from Cryptodome.Cipher import DES


key = b'12345678'	# 密钥(只能是8位)
iv = b'12345678'	# 初始化向量

# 创建了一个DES加密对象
cipher1 = DES.new(key, DES.MODE_CFB, iv)

# 需要加密的数据
data = '大家好,我是啊啊啊'.encode()

# 加密过程
msg = cipher1.encrypt(data)

# 创建了一个解密对象(加密解密不能使用同一把密钥)
cipher2 = DES.new(key, DES.MODE_CFB, iv)

# 解密过程
print(cipher2.decrypt(msg).decode())
复制代码

1.2,3DES

特点:比DES更加安全,更强,通过增加密钥长度(计算机运行能力增强)

简介:

3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次DES加密算法。

由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解。3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一

RSA是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman于1977年发明。Python中可以使用内置库`cryptography`或第三方库`pycryptodome`来实现RSA。以下是基本的RSA加密算法Python中的一种实现: ```python from cryptography.hazmat.primitives import serialization from cryptography.hazmat.primitives.asymmetric import rsa from cryptography.hazmat.backends import default_backend # 生成密钥对 def generate_rsa_keys(): key = rsa.generate_private_key( public_exponent=65537, key_size=2048, backend=default_backend() ) private_key = key.private_bytes( encoding=serialization.Encoding.PEM, format=serialization.PrivateFormat.PKCS8, encryption_algorithm=serialization.NoEncryption() ) public_key = key.public_key().public_bytes( encoding=serialization.Encoding.PEM, format=serialization.PublicFormat.SubjectPublicKeyInfo ) return private_key, public_key # 加密函数 def encrypt_message(message, public_key): encrypted = public_key.encrypt( message.encode(), padding=serialization.OAEP( mgf=serialization.MGF1(algorithm=hashes.SHA256()), algorithm=hashes.SHA256(), label=None ) ) return encrypted # 解密函数 def decrypt_message(encrypted_message, private_key): decrypted = private_key.decrypt( encrypted_message, padding=serialization OAEP( mgf=serialization.MGF1(algorithm=hashes.SHA256()), algorithm=hashes.SHA256(), label=None ) ) return decrypted.decode() # 示例 private_key, public_key = generate_rsa_keys() message = "Hello, RSA!" encrypted = encrypt_message(message, public_key) decrypted = decrypt_message(encrypted, private_key) print(f"原始消息: {message}") print(f"加密后: {encrypted.hex()}") print(f"解密后: {decrypted}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值