对称加密的过程
- 密钥生成:
- 在对称加密中,首先需要生成一个密钥。这个密钥将用于加密和解密数据。
- 密钥应该足够强大,以抵御暴力破解攻击。现代对称加密算法通常使用128位、192位或256位长度的密钥。
- 加密过程:
- 明文:需要加密的原始数据。
- 加密算法:选择一个对称加密算法,如AES(Advanced Encryption Standard)、DES(Data Encryption Standard)或3DES(Triple DES)等。
- 加密:使用选定的加密算法和密钥对明文进行加密,生成密文。
- 解密过程:
- 密文:加密后的数据。
- 解密算法:使用相同的加密算法进行解密。
- 解密:使用相同的密钥对密文进行解密,恢复成原始的明文
示例
假设我们使用AES加密算法进行对称加密。
- 生成密钥:
- 生成一个256位的AES密钥。
- 加密过程:
- 明文:
Hello, World! - 加密算法:AES-256
- 加密:使用AES-256算法和密钥对明文进行加密,得到密文。
- 明文:
- 解密过程:
- 密文:通过加密步骤得到的密文
- 解密算法:AES-256
- 解密:使用相同的AES-256算法和密钥对密文进行解密,得到原始的明文
Hello, World!。
对称加密算法
常见的对称加密算法包括:
- AES(Advanced Encryption Standard):目前最广泛使用的对称加密标准之一,支持128位、192位和256位密钥长度。
- DES(Data Encryption Standard):早期的对称加密标准,现在被认为不够安全,已被AES取代。使用56位加密
- 3DES(Triple DES):通过三次应用DES算法来增强安全性。112位密钥、三个密钥k1/K2/K3 K1=K3(56*2) K2用于解密。
- 3DES中的K1=K3,加密过程是使用K1对M进行DES加密得到C1,然后使用K2对C1进行DES解密得到C2,最后使用K1对C2进行DES加密得到C3。
- IDEA (128位密钥)
- Blowfish:一种较早的对称加密算法,支持可变长度的密钥。
- Twofish:一种设计用于替代DES的对称加密算法,支持128位、192位和256位密钥长度。
- RC-5、RC-4
对称加密的应用场景
对称加密通常用于以下场景:
- 数据加密:加密文件、数据库、备份等。
- 网络通信:加密传输的数据,如SSL/TLS中的数据加密部分。
- 即时通讯:加密聊天消息。
- 硬件加密:加密硬件设备,如USB闪存盘、硬盘等。
对称加密有2种:置换和代换 ABC 代换为CBA ABC 转换XYZ
对称加密有常规加密算法和共享加密算法
公钥加密算法(常用于数字签名)

由B产生一对密钥,
RSA 算法举例
以下是一个简单的 RSA 加密算法的举例:
首先,选择两个大质数 p 和 q ,假设 p = 5 , q = 11 。
计算 n = p * q = 5 * 11 = 55 。
计算欧拉函数 φ(n) = (p - 1) * (q - 1) = 4 * 10 = 40 。
选择一个整数 e ,使得 1 < e < φ(n) ,并且 e 与 φ(n) 互质。假设 e = 7 。
计算 d ,使得 (e * d) % φ(n) = 1 。通过计算可得 d = 23 。
此时,公钥为 (n, e) ,即 (55, 7) ,私钥为 (n, d) ,即 (55, 23) 。
假设要加密的明文 m = 9 。
加密过程: c = m^e % n = 9^7 % 55 = 47 ,得到密文 c = 47 。
解密过程: m = c^d % n = 47^23 % 55 = 9 ,成功解密得到明文 m = 9 。
需要注意的是,在实际应用中,p 和 q 会选择非常大的质数,以保证加密的安全性。
DH算法(密钥交换算法)
DH 公钥加密算法

以下是一个简单的 Diffie-Hellman(DH)算法的举例:
假设 Alice 和 Bob 想要通过 DH 算法协商一个共享密钥。
首先,选取一个大的素数 p 和一个本原根 g 。假设 p = 23 , g = 5 。
Alice 选择一个秘密整数 a = 6 ,然后计算 A = g^a mod p = 5^6 mod 23 = 8 ,并将 A = 8 发送给 Bob。
Bob 选择一个秘密整数 b = 15 ,计算 B = g^b mod p = 5^15 mod 23 = 19 ,并将 B = 19 发送给 Alice。
Alice 收到 B 后,计算共享密钥 K = B^a mod p = 19^6 mod 23 = 2 。
Bob 收到 A 后,计算共享密钥 K = A^b mod p = 8^15 mod 23 = 2 。
这样,Alice 和 Bob 就成功地协商出了相同的共享密钥 K = 2 ,而在这个过程中,他们的秘密整数 a 和 b 并没有在网络中传输,攻击者即使获取了 A 、 B 、 p 和 g ,也很难通过计算得出 a 和 b ,从而保证了密钥协商的安全性。
需要注意的是,在实际应用中,p 通常是一个非常大的数,以确保安全性。
数字信封
甲事先获得乙的公钥,具体加解密过程如下:
- 甲使用对称密钥对明文进行加密,生成密文信息。
- 甲使用乙的公钥加密对称密钥,生成数字信封。
- 甲将数字信封和密文信息一起发送给乙。
- 乙接收到甲的加密信息后,使用自己的私钥打开数字信封,得到对称密钥。
- 乙使用对称密钥对密文信息进行解密,得到最初的明文。

数字签名
数字签名不保证信息的机密性,基于非对称加密算法,用于核实发送方的身份。这里的密文不是加密的。

数字签名是一种用于验证数字文档的真实性和完整性的加密技术。它使用非对称加密算法来确保数据的来源可靠并且未被篡改。
数字签名与数字信封的区别
数字信封和数字签名都是在信息安全领域内广泛使用的加密技术,但它们的目的和使用场景有所不同。下面是这两种技术的主要区别:
数字信封 (Digital Envelope)
- 目的:保护数据的机密性,即确保数据在传输过程中不被第三方窃听或读取。
- 工作原理:
- 发送方使用一个对称加密算法(如AES)对消息进行加密。
- 发送方再使用接收方的公钥加密这个对称密钥,形成“数字信封”。
- 接收方使用自己的私钥解密数字信封,获取对称密钥。
- 接收方使用对称密钥解密消息。
- 优点:对称加密算法通常比非对称加密算法更快,因此可以有效地保护大量数据的机密性。
- 缺点:不提供发送者身份验证或防止数据篡改的功能。
数字签名 (Digital Signature)
- 目的:验证数据的完整性和发送者的身份,确保数据没有被篡改并且确实来自声明的发送者。
- 工作原理:
- 发送方使用哈希函数计算消息的摘要。
- 发送方使用自己的私钥对摘要进行加密,生成数字签名。
- 发送方将消息和数字签名一同发送给接收方。
- 接收方使用发送方的公钥解密数字签名,得到原始摘要。
- 接收方独立地计算接收到的消息的摘要,并与从数字签名中解密出的摘要进行比较。
- 优点:提供了数据完整性和发送者身份认证。
- 缺点:通常较慢,不适合直接用于加密大量数据。
主要区别总结
- 用途:
- 数字信封:主要用于保护数据的机密性。
- 数字签名:主要用于验证数据的完整性和发送者的身份。
- 加密密钥:
- 数字信封:使用公钥加密对称密钥,对称密钥用于加密数据。
- 数字签名:使用私钥加密消息摘要。
- 解密密钥:
- 数字信封:接收方使用私钥解密数字信封获得对称密钥,然后使用对称密钥解密数据。
- 数字签名:接收方使用发送方的公钥解密数字签名以验证其真实性。
- 安全性:
- 数字信封:保证数据在传输过程中的保密性。
- 数字签名:保证数据的真实性和完整性。
- 效率:
- 数字信封:通过结合使用对称加密和非对称加密提高效率。
- 数字签名:仅使用非对称加密,处理速度较慢。
在实际应用中,为了同时提供数据的机密性和完整性验证,通常会将数字信封和数字签名结合起来使用。例如,发送方先使用对称密钥加密消息,然后对这个密钥进行数字签名,最后将加密过的密钥和消息一起封装进数字信封中。接收方则先验证数字签名,确认密钥的有效性后,再使用该密钥解密消息。这样既确保了消息的机密性也验证了其完整性和来源的真实性。
哈希算法
哈希算法=报文摘要算法=HASH算法=散列算法=数字指纹

3DES 加密过程
3DES中的K1=K3,加密过程是使用K1对M进行DES加密得到C1,然后使用K2对C1进行DES解密得到C2,最后使用K1对C2进行DES加密得到C3。
ECC(Elliptic Curve Cryptography,椭圆曲线密码学)是一种基于椭圆曲线数学理论的公钥加密技术。与传统的RSA等公钥加密算法相比,ECC在相同安全强度下所需的密钥长度更短,计算效率更高,因此在资源受限的环境中(如移动设备和物联网设备)特别受欢迎。