待编写
python《加密之对称加密之AES》应用场景、方法介绍及应用示例 python《加密之对称加密之DES》应用场景、方法介绍及应用示例 python《加密之对称加密之RC4》应用场景、方法介绍及应用示例 python《加密之对称加密之3DES》应用场景、方法介绍及应用示例 python《加密之对称加密之抉择》AES、DES、3DES、RC4区别、联系、如何抉择 python《加密之非对称加密之RSA》应用场景、方法介绍及应用示例(https用此) python《加密之非对称加密之DH》应用场景、方法介绍及应用示例 python《加密之非对称加密之ACC》应用场景、方法介绍及应用示例 python《加密之对称非对称抉择》非对称加密、对称加密如何抉择
非对成加密:由两份密钥组成的 公钥和私钥 他们都是一连串的字符,私钥由个人保存,而公钥对外公开 由私钥加密的文件,只有用对应的公钥才能解密 由公钥加密的文件,只有用对应的私钥才能解密 甚至公钥和私钥自己加密的文件,自己都不能解密 常用的非对称加密算法:rsa和ecdsa(btc)
一、AES应用场景及安装
能否解密分类
:可解密、不可解(如hash) 无法反算的加密赞此出不做介绍
解密方式分类
: 对称加密、非对称加密
pip install pycrypto
二、AES方法介绍
key
字节串,对称密码中使用的密钥, 长度必须为16(AES-128)、24(AES-192)、32(AES-256) Bytes 长度mode
用于加密或解密的链接模式,默认为MODE_ECBblock_size
加密它以前缀为密文from Crypto.Util.Padding import pad, unpad # CBC模式加密时 输入的数据长度必须是16字节的倍数。数据长度不足16字节需要进行填充 padded_data = pad(data, 16) # 解密后的数据 去除填充 unpadded_data = unpad(data, 16)
三、应用示例
2023-05-06修改
from Crypto.Cipher import AES
from binascii import b2a_hex, a2b_hex
from Crypto.Util.Padding import pad, unpad
from Crypto.Random import get_random_bytes
# 加密函数
def encrypt_password(password, key, iv):
# 对密码进行填充
padded_password = pad(password.encode('utf-8'), AES.block_size)
# 实例化加密套件,使用CBC模式
cipher = AES.new(key, AES.MODE_CBC, iv)
# 对内容进行加密,pad函数用于分组和填充
ciphertext = cipher.encrypt(padded_password)
return b2a_hex(ciphertext).decode(encoding='utf-8')
# 解密函数
def decrypt_password(ciphertext, key, iv):
# 实例化解密套件,使用CBC模式
cipher = AES.new(key, AES.MODE_CBC, iv)
# 解密数据
plaintext = cipher.decrypt(a2b_hex(ciphertext))
# 对解密后的数据进行去填充操作
password = unpad(plaintext, AES.block_size).decode('utf-8')
return password
if __name__ == '__main__':
# 随机生成 32 字节长度的密钥和 16 字节长度的 IV
key = get_random_bytes(32)
iv = get_random_bytes(16)
password = '123456789'
# 加密密码
encrypted_password = encrypt_password(password, key, iv)
print(encrypted_password)
# 解密函数
decrypted_password = decrypt_password(encrypted_password, key, iv)
print(decrypted_password)
-
在密码学中,IV(Initialization Vector)和key(密钥)是对称加密算法(如AES)和某些非对称加密算法(如RSA)中的两个概念。
-
I V是在加密算法中用于增强
密码强度
的一种方式,它是一段固定长度的随机数,用于在加密数据之前对数据进行初始化。IV与密钥不同,每次加密时都会生成一个新的IV,因此即使对于相同的数据,加密后的密文也会不同。这样做可以防止某些攻击,例如重放攻击。 -
密钥
(key)是一个比较长的二进制字符串,用于加密和解密数据。在对称加密算法中,密钥是唯一的,加密和解密过程使用相同的密钥。只有持有密钥的人才能正确地解密数据,因此密钥的安全性非常重要。
四、安装出错
error: Microsoft Visual C++ 14.0 is required. Get it with "Build Tools for Visual Studio":
https://visualstudio.microsoft.com/downloads/
安装 windows 报错, 2020-07-14 这次坑天啦,怎么搞都搞不定。
注:如果帮到你请点赞再走,有个正向的反馈、别让我心寒。
五、BTC身份如何认证?
芝士君想要转账给Alice十枚比特币,
发布一笔交易申请,并且对这份申请计算一份摘要,
然后用私钥对这份摘要进行加密得到密文、
然后将芝士君将交易内容、加密后的摘要、以及芝士君的公钥进行打包并发出
矿机拿到转账之后,需要辨别申请的真伪,
他需要解包后,先用同样的摘要算法,对芝士君转账申请进行计算,得到一份摘要
然后在用芝士君的公钥对秘文进行解密得到另一份摘要,得出来的两份摘要进行比对
如果这两份结果一致,说明一定是芝士君发起了申请,否则丢弃,这样就完成了身份的认证