golang - php sha1 和 go 的sha1 结果不一样
伊谢尔伦
伊谢尔伦 2017-04-10 17:47:43
[PHP讨论组]

golang:
package main
import (

"crypto/sha1"
"fmt"
"io"

)

func main() {

 h := sha1.New()
io.WriteString(h, "hello")
fmt.Println(h.Sum(nil))

}

==================

php :


结果不同

why ?

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(2)
ringa_lee

Go的代码有点问题,你需要使用%x来强制使用16进制输出。
比如:

fmt.Printf("%x\n", h.Sum(nil))
高洛峰

你应该以十六进制字符输出才能算是一样的值:

十六进制输出:
php: https://tools.vaptu.com/onlin...
golang: https://tools.vaptu.com/onlin...

结果一样


而你的golang算出来的是二进制的,php的 sha1()函数在第二次参数为TRUE的时候则输出二进制。当然输出大部分情况是乱码。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号