当前位置: 首页 > 面试题库 >

C#和golang之间的MD5不一致

贺经纶
2023-03-14
问题内容

我正在尝试从C#移植算法。我需要做的第一步是获取字节数组的md5。我似乎无法在C#和go实现之间获得一致的哈希值。

在C#中,我可以执行以下操作: new MD5CryptoServiceProvider().ComputeHash(new byte[] { 5 }))

我得到 [139 182 193 120 56 100 63 150 145 204 106 77 230 197 23 9]

进行中: md5.New().Sum([]byte{5})

产量: [5 212 29 140 217 143 0 178 4 233 128 9 152 236 248 66 126]

我是在做一些奇怪的事情,还是实现方式实际上有所不同。我需要能够在旅途中复制C#行为。

我有一些可用的小提琴去和C#的,如果你想检查我的整个实现。


问题答案:

您正在滥用Sum函数的输入。sum的输入参数用于存储输出,而不是哈希的输入。md5.Sum如示例所示,直接使用(行为随您的意愿)或写入返回的Hash对象:http
:
//golang.org/pkg/crypto/md5/#example_New



 类似资料:
  • 问题内容: 我面临着一个奇怪的问题,它与Java和php5中的MD5-Hashes有关。我发现在某些情况下,以下代码无法生成正确的MD5哈希值: 我不得不迁移现有的用户数据库,密码存储在php5 MD5中。现在,部分用户(并非全部)无法登录,因为我的Java代码无法生成正确的MD5哈希。 任何想法上面有什么问题吗? 问题答案: 无法正确转换<0x10字节,则需要用零填充。 例:

  • 问题内容: 我只是在阅读一些Java书籍并制作一些小程序进行练习,我创建了一个小代码来获取有关所输入路径的信息,该代码为: 现在在输入对话框中,当我输入时,结果是,但是当我输入C:/时,它将显示C中目录和文件的完整列表。 奇怪的是,D驱动器和其他驱动器不会发生这种情况(即D:/和D:的结果是相同的),这是怎么回事? 更新 使用C#在WPF中也会发生同样的情况! 问题答案: 表示“驱动器上当前选择的

  • 本文向大家介绍Golang中Goroutine和Thread之间的区别。,包括了Golang中Goroutine和Thread之间的区别。的使用技巧和注意事项,需要的朋友参考一下 古鲁丁 Goroutine是可以与其他goroutine一起独立执行的方法/功能。Go语言中的每个并发活动通常都称为gorountine。 线 线程是一个轻量级的过程。可以将其视为执行一段代码的单元。操作系统管理线程。

  • 问题内容: 我们在Android下拥有一个大型Java应用程序(“ big”仅表示翻译该应用程序需要太多工作)。我们必须访问用.Net编写的引擎(该引擎也太大了……)。该引擎仅用于计算。 因此,我们寻求使用Monodroid的解决方案。我们的主要问题是在monodroid和Java之间互操作。目前,我们得到: 从Mono应用程序调用.jar库中的Java函数 但是我们不能调用并启动Java活动。可

  • 本文向大家介绍C和Python之间的区别,包括了C和Python之间的区别的使用技巧和注意事项,需要的朋友参考一下 C和Python都是主要使用的编程语言。各种特性使它们在程序设计领域流行。根据这些特征,我们可以区分C和Python。 以下是C和Python之间的重要区别。 序号 键 C语言 Python语言 定义 Python是一种通用的解释型,交互式,面向对象的高级编程语言。 类型 另一方面,

  • 本文向大家介绍Go和C ++之间的区别。,包括了Go和C ++之间的区别。的使用技巧和注意事项,需要的朋友参考一下 走 Go是一种过程编程语言。程序是使用程序包组装的。它支持类似于动态语言的环境采用模式。 C ++ C ++是一种面向对象的编程语言。C ++安静,快速,可靠且安全。它也是最广泛使用的语言。 以下是Go和C ++之间的重要区别。 序号 键 走 C ++ 1 类型 Go是一种过程编程语