AES和RSA的用法简介

一、AES与RSA区别

AES是对称加密:

1、特点:加密和解密使用相同的密钥
相对于非对称加密,AES加密和解密的速度更快
支持128、192或256位的密钥长度,提供了不同级别的安全性。
基于分组的加密,通常使用128位的数据块大小。
使用场景:
当需要高效加密大量数据时,AES是首选。
例如,在存储敏感信息或进行安全通信时,AES用于保护数据的机密性。

2、使用介绍:

在使用aes时需要添加模块

pip install pycryptodome

 在终端上输入上那面的代码。

先介绍aes的ecb模式(加密和解密都是使用同一个秘钥)加密的对象也必须是字节类型数据

from Crypto.Cipher import AES
import base64#导入需要的模块
#需要秘钥
key="alex is dab12345"#要求是16位或者32,24位
data="hello world".encode()
#data也必修是16位的
while len(data)%16!=0:
    data+=b"\0"
aes=AES.new(key,MODE_ECB)#选择加密的类型是ecb模式
encoded_text=aes.encrypt(data)
print(encoded_text
#得出结果
#b'\x0c\xe0\xd9\xe26\x12\x03\xfah\x1e\xaavD.\xc9\x11'

 第二个模式是 cbc模式,就是多了一个iv偏量

from Crypto.Cipher import AES
import base64#导入需要的模块
#需要秘钥
iv="0123456789123456".encode()
key="alex is dab12345"#要求是16位或者32,24位
data="hello world".encode()
#data也必修是16位的
while len(data)%16!=0:
    data+=b"\0"
aes=AES.new(key,MODE_CBC,iv)#选择加密的类型是cbc模式
encoded_text=aes.encrypt(data)
print(encoded_text)
#得出结果
#b'\x0c\xe0\xd9\xe26\x12\x03\xfah\x1e\xaavD.\xc9\x11'

 RSA是非对称加密:

主要用于密钥交换、数字签名和认证
特点:
使用一对密钥,公钥用于加密,私钥用于解密。
因为涉及复杂的数学运算,加密和解密速度较慢。
安全性基于大数分解的难度。
使用场景:
在无法安全地共享密钥的情况下,RSA用于安全地交换对称密钥。
数字签名,确保消息的完整性和来源验证。
公钥基础设施(PKI)中的身份验证和证书管理。

公钥加密私钥解密,私钥加密公钥解密

from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5
import base64
#生成秘钥对
key=RSA.generate(2048)
#生成公钥
with open("public.pem","wb")as f:
    f.write(key.publicKey().exportKey())
with open("private.pem","wb")as f:
    f.write(key.exportKey())
text="我很开心".encode()#需要加密的内容
#公钥加密
with open("public.pem","r")as f:
    pk=f.read()
    key_pk=RSA.importKey(pk)
    rsa=PKCS1_v1_5.new(key_pk)
    rsa_text=rsa.encrypt(text)

#至此公钥加密完成
#私钥解密
with open("private.pem","r")as f:
    pk=f.read()
    key_pk=RSA.importKey(pk)
    rsa=PKCS1_V1_5.new(key_pk)
    encoded_text=rsa.decrypt(rsa_text)
print(encoded_text)
#至此解密完成
#公钥加密后: b'#\x7f\xad\x9f\xdb(I\x87;K\xfdi\x1fc\xf7\x02\xc6\xfcWw\xe9\x05\xe5\xa3T"s\x81\xddl(n\x85\x93\xa0\xf0\xb0\n\xcc\xa9L\x92\xdb\x91JI0j\xb5\x15+\xb5\x94\xd2\x9d\xb8H\xebpsp\xb2\xa8O\xdcWV\xc2\n\'\x85\x94ky\x05\x08\x90\x05V\rL=\x18\x8e\x81`\x93Vk|2\x94#\x010\xd7\x8d7w;\xca\x00\xf3$\xdd\xc8\xc5\xa4\xa8\xd1z\xb61\x82\xbd\t6r\xcfk\x0e\xfc\x85\x97\xce\xbc,\xfb\xc0p\xddv=\xd9\xea7\x85\xffaW\x97\x13\xdd\xb3=I\x00\x13\x80\xbb\x90\x89\xc3(kb\x14\x02P\'\xb0Z\xe9\xc9\xad\xda.\x86\x02d\x08\x01\xd3\x91\x86\xa7\xce\xcd\x00z\xcd\xa5\xc9}\xda\xf0\xc7\xfb\x99\xa3\x02\xd0\xca\xbb0\xbe\xdf >C\x14\xb2m\xd8\xb4\xc4\x90|(;\xf1\xbe\xf3\x14\x8b\x98\xa3\x96\xd4\x8f\x9c\x83\xb5\xb3;\xc4\xef\x0e\x0e\xca\x9c\xe2\xba\\\xad\x16n,fH\xe0\xcf\x06?\xc7=\xcb\x80\x1b\xbd\x00i\xe1.\x1b\xb9'
#私钥解密后: 我很开心



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值