登录
首页 >  Golang >  Go问答

go与php的md5功能,加密后不一致问题

来源:SegmentFault

时间:2023-01-08 18:10:53 234浏览 收藏

对于一个Golang开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《go与php的md5功能,加密后不一致问题》,主要介绍了go、PHP、MD5,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!

问题内容

现在因要对接一个平台的api,有一个需求:
go中字符串md5后,再base64后,结果与php版的不一样,

php代码(请注意:md5中的第二个参数为true,为输出二进~~~~制):

$str="hello";
$md5str=md5($str,true);
echo base64_encode($md5str); //echo: XUFAKrxLKna5cZ2REBfFkg==

我自己写的,始终与php版的不一致(如果php版的md5的第二参数为false的话,两个版本的结果就一致).
我的代码如下:

data := []byte("hello")
has := md5.Sum(data)
md5str1 := fmt.Sprintf("%x", has) //将[]byte转成16进制
fmt.Println(base64.StdEncoding.EncodeToString([]byte(md5str1)))

请教下在go中如何实现?
谢谢!

正确答案

https://play.golang.org/p/pxc-5QnciVv

package main

import (
    "crypto/md5"
    "encoding/base64"
    "fmt"
)

func main() {
    h := md5.New()
    h.Write([]byte("hello"))
    fmt.Println(base64.StdEncoding.EncodeToString(h.Sum(nil)))
    fmt.Println("Hello, playground")
    // echo: XUFAKrxLKna5cZ2REBfFkg==
}

到这里,我们也就讲完了《go与php的md5功能,加密后不一致问题》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于golang的知识点!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表