RSA非对称加密算法的一种,这里分享一下服务端生成公钥和私钥的实例,并打印出来。

一:实例代码

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: %s\n", err)
		os.Exit(1)
	}

	// 将私钥导出为PEM格式
	privateKeyPEM := &pem.Block{
		Type:  "RSA PRIVATE KEY",
		Bytes: x509.MarshalPKCS1PrivateKey(privateKey),
	}
	fmt.Printf("Private Key:\n%s\n", 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: %s\n", err)
		os.Exit(1)
	}
	publicKeyPEM := &pem.Block{
		Type:  "RSA PUBLIC KEY",
		Bytes: publicKeyBytes,
	}
	fmt.Printf("Public Key:\n%s\n", 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. 应用
    哈希算法在密码学和数据完整性验证中有广泛应用。例如,将用户密码进行哈希运算后存储在数据库中,可以防止密码泄露后被直接获取;通过对数据进行哈希运算并使用私钥加密哈希值,可以生成数字签名,用于验证数据的完整性和身份认证。

07-12 23:44