几种常见消息加密方式

如图:







术语解释:

对称加密:加密和解密用的都是同样的密钥

非对称加密:加密所用的密钥和解密所用的密钥是不相同的

OpenSSL:一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。

https:即在ssl协议上传输http


### AES 加密模式概述 AES(高级加密标准)是一种分组密码,支持多种操作模式来增强安全性并适应不同的应用场景。以下是常见的五种AES加密模式: #### 电子码本 (ECB, Electronic Codebook) ECB 是最简单的分组密码模式,在这种模式下,明文被分割成多个固定大小的数据块,每个数据块独立地通过相同的密钥进行加密[^1]。 优点在于其实现简单快速,缺点则是相同的消息会产生完全一致的密文,这可能导致某些情况下泄露关于原始消息的信息。 ```python from Crypto.Cipher import AES cipher = AES.new(key, AES.MODE_ECB) ciphertext = cipher.encrypt(plaintext) ``` #### 密码分组链接 (CBC, Cipher Block Chaining) 在 CBC 模式中,每个待加密的数据块先与其前一个已加密的数据块的结果异或后再送入加密算法处理。对于第一个数据块,则使用初始化向量 IV 进行异或运算。 这种方式使得即使两个文件有重复的内容部分,只要位置不同也会得到完全不同结果,从而提高了安全性和抗攻击能力。 ```python iv = b'0'*16 # Initialization Vector cipher = AES.new(key, AES.MODE_CBC, iv=iv) ciphertext = cipher.encrypt(plaintext) ``` #### 密文反馈 (CFB, Cipher Feedback) CFB 可以把块密码变成一种流式的加密方式,它的工作原理与 CBC 类似,区别是在于 CFB 的输入不是直接来自上一轮输出而是经过移位寄存器后的值[^2]。 此特性允许接收方可以在接收到一部分数据之后立即开始解密而无需等待整个报文传输完毕。 ```python iv = b'0'*16 cipher = AES.new(key, AES.MODE_CFB, iv=iv) ciphertext = cipher.encrypt(plaintext) ``` #### 输出反馈 (OFB, Output Feedback) OFB 将块密码转换成了流密码的一种形式,其中每次只对IV 或者之前产生的密文应用加密函数生成新的密钥串,并以此作为下一个字符或字节序列的掩码。 该方法的一个显著特点是其错误不会传播到后续的数据单元里去。 ```python iv = b'0'*16 cipher = AES.new(key, AES.MODE_OFB, iv=iv) ciphertext = cipher.encrypt(plaintext) ``` #### Galois/Counter Mode (GCM) GCM 同时提供了机密性和认证功能,这是一种高效的并行化实现方案,适用于高速网络环境下的大量数据传输保护需求。 除了提供传统的保密服务外,还能够验证消息的真实性以及完整性。 ```python nonce = b'unique nonce' cipher = AES.new(key, AES.MODE_GCM, nonce=nonce) ciphertext, tag = cipher.encrypt_and_digest(plaintext) ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值