程序开发 · 2023年8月6日

Go和PHP的MD5函数差异:为什么我的Go代码对接平台API时,MD5结果与PHP不一致?

哈喽!大家好,很高兴又见面了,我是GOLANG的一名作者,今天由我给大家带来一篇
《Go和PHP的MD5函数差异:为什么我的Go代码对接平台API时,MD5结果与PHP不一致?》,本文主要会讲到
等等知识点,希望大家一起学习进步,也欢迎大家关注、点赞、收藏、转发! 下面就一起来看看吧!,
,
go和php中的md5函数差异,在对接平台api时,需要注意go和php中的md5函数存在一定差异。具体表现为,在go中使用md5.sum计算md5值,得到的二进制结果与php中设置第二个参数为true的md5函数结果不一致。,
go代码问题,代码中存在的问题是,在将md5.sum返回的[]byte转换为十六进制字符串md5str1时,没有考虑到md5摘要的固定长度(16字节)。因此,最终再进行base64编码时,得到的base64字符串与php不一致。,
正确实现方法,为了解决这个问题,go中的代码应该将h.sum(nil)返回的[]byte直接转换为base64字符串,如下所示:,通过这种方式,go和php得到的md5结果将完全一致。,今天带大家了解了的相关知识,希望对你有所帮助;关于GOLANG的技术知识我们会一点点深入介绍,欢迎大家关注GOLANG公众号,一起学习编程~,go和php中的md5函数差异,哈喽!大家好,很高兴又见面了,我是GOLANG的一名作者,今天由我给大家带来一篇
《Go和PHP的MD5函数差异:为什么我的Go代码对接平台API时,MD5结果与PHP不一致?》,本文主要会讲到
等等知识点,希望大家一起学习进步,也欢迎大家关注、点赞、收藏、转发! 下面就一起来看看吧!,

当前位置: > > > > Go和PHP的MD5函数差异:为什么我的Go代码对接平台API时,MD5结果与PHP不一致?

Go和PHP的MD5函数差异:为什么我的Go代码对接平台API时,MD5结果与PHP不一致?

2024-11-02 21:46:01
0浏览
收藏

哈喽!大家好,很高兴又见面了,我是GOLANG的一名作者,今天由我给大家带来一篇《Go和PHP的MD5函数差异:为什么我的Go代码对接平台API时,MD5结果与PHP不一致?》,本文主要会讲到等等知识点,希望大家一起学习进步,也欢迎大家关注、点赞、收藏、转发! 下面就一起来看看吧!

go和php中的md5函数差异

在对接平台api时,需要注意go和php中的md5函数存在一定差异。具体表现为,在go中使用md5.sum计算md5值,得到的二进制结果与php中设置第二个参数为true的md5函数结果不一致。

go代码问题

代码中存在的问题是,在将md5.sum返回的[]byte转换为十六进制字符串md5str1时,没有考虑到md5摘要的固定长度(16字节)。因此,最终再进行base64编码时,得到的base64字符串与php不一致。

正确实现方法

为了解决这个问题,go中的代码应该将h.sum(nil)返回的[]byte直接转换为base64字符串,如下所示:

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)))
    // echo: XUFAKrxLKna5cZ2REBfFkg==
}

通过这种方式,go和php得到的md5结果将完全一致。

今天带大家了解了的相关知识,希望对你有所帮助;关于GOLANG的技术知识我们会一点点深入介绍,欢迎大家关注GOLANG公众号,一起学习编程~

Windows电源选项的作用是什么
为什么 GOLANG 的并发性战胜了 PHP