您的位置:首页 > 游戏 > 手游 > golang学习笔记25——golang 实现 MD5加密、RSA加密 和 Base64编码

golang学习笔记25——golang 实现 MD5加密、RSA加密 和 Base64编码

2024/12/22 23:20:59 来源:https://blog.csdn.net/woaijssss/article/details/142309486  浏览:    关键词:golang学习笔记25——golang 实现 MD5加密、RSA加密 和 Base64编码
  • 推荐学习文档
    • golang应用级os框架,欢迎star
    • golang应用级os框架使用案例,欢迎star
    • 案例:基于golang开发的一款超有个性的旅游计划app经历
    • golang实战大纲
    • golang优秀开发常用开源库汇总
    • 想学习更多golang知识,这里有免费的golang学习笔记专栏

文章目录

    • 引言
    • MD5 实现
    • RSA 实现
    • Base64 实现
    • 总结

引言

在开发过程中,经常会涉及到数据加密、编码等操作。本文将详细介绍在 Go 语言中如何实现 MD5 哈希、RSA 加密以及 Base64 编码,并通过代码示例来加深理解。

MD5 实现

  • MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,用于生成数据的固定长度的哈希值。在 Go 语言中,可以使用crypto/md5包来实现 MD5 计算。
    • 源码可直接使用
  • 以下是一个简单的示例代码:
package mainimport ("crypto/md5""fmt""io"
)func main() {data := []byte("This is a test string for MD5.")hash := md5.New()io.WriteString(hash, string(data))md5Sum := hash.Sum(nil)fmt.Printf("MD5 sum: %x\n", md5Sum)
}

在上述代码中,首先创建了一个md5.Hash对象,然后通过io.WriteString将数据写入哈希对象中,最后通过Sum方法获取哈希值。

RSA 实现

  • RSA(Rivest-Shamir-Adleman)是一种非对称加密算法。在 Go 语言中,crypto/rsa包提供了对 RSA 算法的支持。
  • 以下是一个生成 RSA 密钥对并进行加密和解密的示例:
package mainimport ("crypto/rand""crypto/rsa""crypto/x509""encoding/pem""fmt"
)func main() {// 生成 RSA 私钥privateKey, err := rsa.GenerateKey(rand.Reader, 2048)if err!= nil {fmt.Println("Error generating private key:", err)return}// 将私钥转换为 PEM 格式privateKeyPEM := &pem.Block{Type:  "RSA PRIVATE KEY",Bytes: x509.MarshalPKCS1PrivateKey(privateKey),}// 保存私钥到文件(可省略)privateKeyFile, err := os.Create("private.pem")if err!= nil {fmt.Println("Error creating private key file:", err)return}pem.Encode(privateKeyFile, privateKeyPEM)privateKeyFile.Close()// 获取公钥publicKey := privateKey.PublicKey// 将公钥转换为 PEM 格式publicKeyPEM := &pem.Block{Type:  "RSA PUBLIC KEY",Bytes: x509.MarshalPKCS1PublicKey(&publicKey),}// 保存公钥到文件(可省略)publicKeyFile, err := os.Create("public.pem")if err!= nil {fmt.Println("Error creating public key file:", err)return}pem.Encode(publicKeyFile, publicKeyPEM)publicKeyFile.Close()// 要加密的数据data := []byte("This is a test string for RSA.")// 使用公钥加密encryptedData, err := rsa.EncryptPKCS1v15(rand.Reader, &publicKey, data)if err!= nil {fmt.Println("Error encrypting data:", err)return}fmt.Printf("Encrypted data: %x\n", encryptedData)// 使用私钥解密decryptedData, err := rsa.DecryptPKCS1v15(rand.Reader, privateKey, encryptedData)if err!= nil {fmt.Println("Error decrypting data:", err)return}fmt.Printf("Decrypted data: %s\n", decryptedData)
}

在上述代码中,首先生成了 RSA 密钥对,然后将密钥转换为 PEM 格式并可以选择保存到文件中。接着使用公钥对数据进行加密,再使用私钥进行解密。

Base64 实现

  • Base64 是一种用于将二进制数据编码为 ASCII 字符串的编码方式。在 Go 语言中,encoding/base64包提供了对 Base64 编码和解码的功能。
  • 源码可直接使用
  • 以下是一个简单的示例:
package mainimport ("encoding/base64""fmt"
)func main() {data := []byte("This is a test string for Base64.")encodedData := base64.StdEncoding.EncodeToString(data)fmt.Printf("Encoded data: %s\n", encodedData)decodedData, err := base64.StdEncoding.DecodeString(encodedData)if err!= nil {fmt.Println("Error decoding data:", err)return}fmt.Printf("Decoded data: %s\n", decodedData)
}

在上述代码中,使用base64.StdEncoding.EncodeToString方法将数据进行 Base64 编码,使用DecodeString方法进行解码。

总结

通过以上内容,我们详细介绍了在 Go 语言中实现 MD5 哈希、RSA 加密以及 Base64 编码的方法,并给出了相应的代码示例。这些加密和编码技术在实际开发中具有广泛的应用,开发者可以根据具体需求灵活运用。
以上文章内容可以根据你的实际需求进行调整,希望对你有所帮助。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com