golang sha1,base64

benlightning · · 11302 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

1.base64编码

package main

//这个语法引入了 encoding/base64 包并使用名称 b64代替默认的 base64。这样可以节省点空间。
import b64 "encoding/base64"
import "fmt"

func main() {
    //这是将要编解码的字符串。
    data := "abc123!?$*&()'-=@~"
    //Go 同时支持标准的和 URL 兼容的 base64 格式。编码需要使用 []byte 类型的参数,所以要将字符串转成此类型。
    sEnc := b64.StdEncoding.EncodeToString([]byte(data))
    fmt.Println(sEnc)
    //解码可能会返回错误,如果不确定输入信息格式是否正确,那么,你就需要进行错误检查了。
    sDec, _ := b64.StdEncoding.DecodeString(sEnc)
    fmt.Println(string(sDec))
    fmt.Println()
    //使用 URL 兼容的 base64 格式进行编解码。
    uEnc := b64.URLEncoding.EncodeToString([]byte(data))
    fmt.Println(uEnc)
    uDec, _ := b64.URLEncoding.DecodeString(uEnc)
    fmt.Println(string(uDec))
    //标准 base64 编码和 URL 兼容 base64 编码的编码字符串存在稍许不同(后缀为 + 和 -),但是两者都可以正确解码为原始字符串。
}

/*
运行结果如下:
$ go run base64-encoding.go
YWJjMTIzIT8kKiYoKSctPUB+
abc123!?$*&()'-=@~
YWJjMTIzIT8kKiYoKSctPUB-
abc123!?$*&()'-=@~
*/

 

2.sha1加密

package main

//Go 在多个 crypto/* 包中实现了一系列散列函数。
import "crypto/sha1"
import "fmt"

func main() {
    s := "sha1 this string"
    //产生一个散列值得方式是 sha1.New(),sha1.Write(bytes),然后 sha1.Sum([]byte{})。这里我们从一个新的散列开始。
    h := sha1.New()
    //写入要处理的字节。如果是一个字符串,需要使用[]byte(s) 来强制转换成字节数组。
    h.Write([]byte(s))
    //这个用来得到最终的散列值的字符切片。Sum 的参数可以用来都现有的字符切片追加额外的字节切片:一般不需要要。
    bs := h.Sum(nil)
    //SHA1 值经常以 16 进制输出,例如在 git commit 中。使用%x 来将散列结果格式化为 16 进制字符串。
    fmt.Println(s)
    fmt.Printf("%x\n", bs)
}

/*
运行程序计算散列值并以可读 16 进制格式输出。
$ go run sha1-hashes.go
sha1 this string
cf23df2207d99a74fbe169e3eba035e633b65d94
你可以使用和上面相似的方式来计算其他形式的散列值。例如,计算 MD5 散列,引入 crypto/md5 并使用 md5.New()方法。
注意,如果你需要密码学上的安全散列,你需要小心的研究一下哈希强度。
*/

 

本文来自:博客园

感谢作者:benlightning

查看原文:golang sha1,base64

入群交流(和以上内容无关):Go中文网 QQ 交流群:798786647 或加微信入微信群:274768166 备注:入群;关注公众号:Go语言中文网

11302 次点击  
加入收藏 微博
上一篇:golang json
下一篇:golang 信号
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传