RSA非对称加密算法的一种,这里分享一下服务端生成公钥和私钥的实例,并打印出来。
# 一:实例代码
```javascript
package main
import (
"bufio"
"crypto/rand"
"crypto/rsa"
"crypto/x509"
"encoding/pem"
"fmt"
"os"
)
func main() {
// 生成RSA密钥对
privateKey, err := rsa.GenerateKey(rand.Reader, 2048)
if err != nil {
fmt.Fprintf(os.Stderr, "Failed to generate private key: %sn", err)
os.Exit(1)
}
// 将私钥导出为PEM格式
privateKeyPEM := &pem.Block{
Type: "RSA PRIVATE KEY",
Bytes: x509.MarshalPKCS1PrivateKey(privateKey),
}
fmt.Printf("Private Key:n%sn", pem.EncodeToMemory(privateKeyPEM))
// 将公钥导出为PEM格式(注意:这里导出的是PKCS#1格式的公钥,也可以导出为SPKI格式)
publicKey := &privateKey.PublicKey
publicKeyBytes, err := x509.MarshalPKIXPublicKey(publicKey)
if err != nil {
fmt.Fprintf(os.Stderr, "Failed to marshal public key: %sn", err)
os.Exit(1)
}
publicKeyPEM := &pem.Block{
Type: "RSA PUBLIC KEY",
Bytes: publicKeyBytes,
}
fmt.Printf("Public Key:n%sn", pem.EncodeToMemory(publicKeyPEM))
fmt.Println("程序运行完毕,按任意键退出...")
reader := bufio.NewReader(os.Stdin)
reader.ReadString('n')
}
```
# 二:常见加密算法
**一、对称加密算法**
1. 原理
对称加密算法使用相同的密钥对数据进行加密和解密。通信双方必须共享一个相同的密钥,加密时发送方使用该密钥对数据进行加密,接收方则使用相同的密钥进行解密。这种加密方式速度快,但密钥管理复杂,因为双方必须安全地共享和保存密钥。
2. 常见算法
DES(Data Encryption Standard):是最早广泛应用的对称加密算法之一,使用56位密钥。由于密钥长度较短,现在已逐渐被淘汰。
3DES(Triple DES):基于DES的增强版本,使用三个不同的密钥或同一个密钥进行三次DES加密,提高了安全性。
AES(Advanced Encryption Standard):目前最广泛使用的对称加密算法,支持128、192和256位密钥,具有高强度、高速度和易于实现的特点。
3. 应用
对称加密算法在数据传输和存储中有广泛应用,如SSL/TLS协议中的数据加密、文件加密等。
**二、非对称加密算法**
1. 原理
非对称加密算法使用一对密钥:公钥和私钥。公钥可以公开给任何人,用于加密数据;私钥则只有密钥的持有者知道,用于解密数据。这种加密方式增强了安全性,因为即使公钥被公开,也无法直接推算出私钥。
2. 常见算法
RSA(Rivest-Shamir-Adleman):最知名的非对称加密算法之一,广泛应用于SSL证书、数字签名等领域。
ECC(Elliptic Curve Cryptography):基于椭圆曲线密码学的加密算法,相较于RSA,ECC提供了更高的安全性和更短的密钥长度。
3. 应用
非对称加密算法在身份验证和密钥交换中有广泛应用。例如,数字证书利用RSA算法生成公钥和私钥,验证网站的身份和加密通信;RSA算法还用于SSL证书中的密钥交换,确保通信数据的安全传输。
**三、哈希算法**
1. 原理
哈希算法(又称散列算法)是一种将任意长度的输入数据转换为固定长度哈希值的算法。哈希值具有唯一性(不同数据生成不同哈希值)、不可逆性(无法从哈希值反推出原始数据)和固定长度(无论输入数据长度如何,输出哈希值长度固定)的特点。
2. 常见算法
MD5(Message-Digest Algorithm 5):一种广泛使用的哈希算法,将任意长度的信息转换为128位(16字节)的哈希值。但近年来,由于哈希碰撞的可能性增加,其安全性受到质疑。
SHA(Secure Hash Algorithm):包括SHA-1、SHA-256、SHA-512等多个版本,其中SHA-256和SHA-512等较新版本被认为更安全。SHA算法广泛应用于文件校验、数字签名等领域。
HMAC(Hash-based Message Authentication Code):基于哈希算法的消息认证码,通过结合密钥和哈希算法来确保消息的完整性和认证性。
3. 应用
哈希算法在密码学和数据完整性验证中有广泛应用。例如,将用户密码进行哈希运算后存储在数据库中,可以防止密码泄露后被直接获取;通过对数据进行哈希运算并使用私钥加密哈希值,可以生成数字签名,用于验证数据的完整性和身份认证。