Go 语言入门很简单 -- Go 加密和解密 #私藏项目实操分享#

举报
宇宙之一粟 发表于 2022/01/18 00:41:27 2022/01/18
【摘要】 介绍 项目开发过程中,一个不可避免的问题就是密码安全问题。实际上,我们经常能看到很多新闻的密码泄露事件,很多传统的企业密码采用明文存储,一旦发生安全事件,损失极大。 如何保证用户的密码安全,让用户放心,就是一个开发者最该考虑的事情。 目前常用的加解密的方式无非三种: 对称加...

介绍

项目开发过程中,一个不可避免的问题就是密码安全问题。实际上,我们经常能看到很多新闻的密码泄露事件,很多传统的企业密码采用明文存储,一旦发生安全事件,损失极大。

如何保证用户的密码安全,让用户放心,就是一个开发者最该考虑的事情。

目前常用的加解密的方式无非三种:

  • 对称加密,加解密都使用的是同一个密钥, 其中的代表就是 AES、DES;
  • 非对加解密,加解密使用不同的密钥, 其中的代表就是 RSA、椭圆曲线;
  • 签名算法, 如 MD5, SHA1, HMAC等, 主要用于验证,防止信息被修改, 如:文件校验、数字签名;

在本章中,我们将探讨如何使用 Go 语言的哈希算法。哈希算法通过使用数学函数将字符串或者文本生成一个或多个值。 

下面是本文将要提到的 Go 语言实现的哈希算法:

  • MD5
  • SHA256
  • 密钥散列(HMAC)ha

哈希算法:MD5

package mainimport (    "crypto/md5"    "encoding/hex"    "fmt")func main() {    message := "hello world, My name is yuzhou1su"    fmt.Println("原文:", message)    h := md5.New()    h.Write([]byte(message))    hash_message := hex.EncodeToString(h.Sum(nil))    fmt.Println("MD5 加密后:", hash_message)}
        

运行代码后:

原文: hello world, My name is yuzhou1suMD5 加密后: 07cc56aff30f1c23a718d7fa6466b837
        

哈希算法:SHA256

package mainimport (    "crypto/sha256"    "encoding/hex"    "fmt")func main() {    message := "hello world, My name is yuzhou1su"    fmt.Println("原文:", message)    // h := md5.New()    h := sha256.New()    h.Write([]byte(message))    hash_message := hex.EncodeToString(h.Sum(nil))    fmt.Println("SHA256 加密后:", hash_message)}
        

代码运行后:

原文: hello world, My name is yuzhou1suSHA256 加密后: 76a6dadbdf006a2f27cd07899de9ab1bdadf2ac66ddec5cbf85be974379140ab
        

使用HMAC对钥匙进行哈希运算

package mainimport (    "crypto/hmac"    "crypto/sha256"    "encoding/hex"    "fmt")func demoHashKey(key, message string) {    hmacKey := []byte(key)    h := hmac.New(sha256.New, hmacKey)    h.Write([]byte(message))    hash_message := hex.EncodeToString(h.Sum(nil))    fmt.Println(hash_message)}func main() {    message := "hello world, My name is yuzhou1su"    fmt.Println("原文:", message)    // h := md5.New()    h := sha256.New()    h.Write([]byte(message))    hash_message := hex.EncodeToString(h.Sum(nil))    fmt.Println("SHA256 加密后:", hash_message)    demoHashKey("键", message)}
        
原文: hello world, My name is yuzhou1suSHA256 加密后: 76a6dadbdf006a2f27cd07899de9ab1bdadf2ac66ddec5cbf85be974379140abe0d8bd652c6a47ff227b2c5eb136f411cb9281a37ad13b1126a31951f38a790c
        

总结

本文简单介绍了三种哈希算法,下一篇文章将介绍加密算法。

文章来源: blog.csdn.net,作者:宇宙之一粟,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/yuzhou_1shu/article/details/122524651

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。