Python hmac 和 C# hmac

2023-11-26

我们有一个 python 网络服务。它需要一个哈希作为参数。 python中的hash就是这样生成的。

    hashed_data = hmac.new("ant", "bat", hashlib.sha1)
    print hashed_data.hexdigest()

现在,这就是我从 C# 生成哈希的方法。

    ASCIIEncoding encoder = new ASCIIEncoding();
    Byte[] code = encoder.GetBytes("ant");
    HMACSHA1 hmSha1 = new HMACSHA1(code);
    Byte[] hashMe = encoder.GetBytes("bat");
    Byte[] hmBytes = hmSha1.ComputeHash(hashMe);
    Console.WriteLine(Convert.ToBase64String(hmBytes));

然而,我得到了不同的结果。

我应该更改散列的顺序吗?

谢谢你,

Jon


为了打印结果:

  • 在Python中你使用:.hexdigest()
  • 在 C# 中,您使用:Convert.ToBase64String

这两个函数根本不做同样的事情。 Python 的 hexdigest 只是将字节数组转换为十六进制字符串,而 C# 方法使用 Base64 编码来转换字节数组。因此,要获得相同的输出,只需定义一个函数:

public static string ToHexString(byte[] array)
{
    StringBuilder hex = new StringBuilder(array.Length * 2);
    foreach (byte b in array)
    {
        hex.AppendFormat("{0:x2}", b);
    }
    return hex.ToString();
}

进而:

ASCIIEncoding encoder = new ASCIIEncoding();
Byte[] code = encoder.GetBytes("ant");
HMACSHA1 hmSha1 = new HMACSHA1(code);
Byte[] hashMe = encoder.GetBytes("bat");
Byte[] hmBytes = hmSha1.ComputeHash(hashMe);
Console.WriteLine(ToHexString(hmBytes));

现在您将获得与 Python 中相同的输出:

739ebc1e3600d5be6e9fa875bd0a572d6aee9266
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python hmac 和 C# hmac 的相关文章

随机推荐

  • 如何将 ggplot 标题与窗口而不是绘图网格对齐?

    In ggplot2版本 0 9 更改了绘图标题的对齐方式 在 v0 8 9 中 对齐是相对于绘图窗口的 而在 v0 9 中 对齐是相对于绘图网格的 现在 虽然我基本上同意这是理想的行为 但我经常有很长的情节标题 问题 有没有办法将绘图标题
  • 如何以编程方式将表滚动到特定的 tr

    我想使用 Javascript 或 jquery 将 html 表滚动到特定的 tr 目前我可以获得所选 tr 的偏移量 并且我正在使用 scrollTop 方法 我已经尝试了以下方法 但它对我不起作用 var table document
  • MongoParseError:不支持选项 useCreateIndex、useFindAndModify

    我尝试运行它 它说像标题一样的错误 和 这是我的代码 const URI process env MONGODB URL mongoose connect URI useCreateIndex true useFindAndModify f
  • innodb 隔离级别和锁定

    我正在阅读一本关于 innodb 事务的手册 但仍然有很多不清楚的东西 例如 我不太理解以下行为 client 1 client 2 mysql gt create table simple col int engine innodb my
  • 如何推送到远程当前的 git 分支,并立即反映更改?

    我有 2 台网络服务器 一台正在测试 一台正在运行 两者的代码库都使用 git 进行管理 我在测试服务器上进行开发 然后将更改从测试服务器上的主分支推送到实时服务器git push 但是 目前我必须登录到实时服务器并运行git reset
  • 可与 Angular.js 一起使用

    我正在尝试使用 footable http themergency com footable demo responsive container htm 以及 angular js 随着窗口大小的减小 仅当单击加号时才会显示第 3 4 5
  • Nginx 从不同的服务器提供 php 文件

    我正在尝试配置 nginx 以从另一台服务器提供 PHP 服务 这些文件可以位于其他服务器上 sample 下的目录中 Fast CGI 正在另一台服务器的端口 9000 上运行 这是我尝试过的 目前不起作用 location php pr
  • Delphi应用程序在调试时出现“无调试信息”

    我们构建了一个使用包和组件的应用程序 当我们调试应用程序时 IDE 中的 事件日志 通常会显示我们的 BPL 正在加载 但没有调试信息 无调试信息 这是没有意义的 因为我们所有的包和 EXE 都是通过调试构建的 each project O
  • WPF 本身支持读取/写入 WMF/EMF 文件吗?

    Windows Presentation Foundation 可以在不使用 WinForms Interop 或 Win32 的情况下读取 写入 WMF EMF 文件吗 如果没有 原因是什么 在 MSDN 上快速搜索发现a thread包
  • 停用 Jetty 的默认 404 错误处理程序

    我想在 Spring 3 1 Web 应用程序中提供自定义 404 错误页面 但我无法停用 Jetty 8 的默认 404 错误页面 Jetty 8 开箱即用 提供默认的 404 错误页面 当访问 Jetty 托管的网站并提供不由任何 se
  • MVC 与 n 层架构

    我想知道 MVC 一种架构模式 和应用程序的 n 层架构之间到底有什么区别 我搜索过但找不到简单的解释 可能我对 MVC 概念有点天真 所以如果有人能解释其中的区别那就太好了 N 层架构通常由网络分隔各层 IE 表示层位于某些 Web 服务
  • 在 Python 中设置配置文件的最佳方法是什么

    我意识到这个问题之前被问过 在 Python 中使用设置文件的最佳实践是什么 但鉴于这是 7 年前提出的问题 我认为随着技术的发展 再次讨论是有效的 我有一个 python 项目 需要根据环境变量的值使用不同的配置 由于使用环境变量来选择配
  • 折叠字符串中的空格

    我有一个看起来像这样的字符串 stuff more stuff stuff gt DD 我想去掉所有标点符号 将所有内容设为大写并折叠所有空格 使其看起来像这样 STUFF MORE STUFF STUFF DD 这可以通过一个正则表达式实
  • 使用支持库 v7:21 和 Android 开发人员工具中的工具栏为现有项目添加滑动选项卡

    我已经阅读了此链接中的信息 将 Tab 与新工具栏结合使用 AppCompat v7 21 并对此进行了大量研究 但问题是 SlidingTabLayout 项目正在使用 Gradle 构建文件和结构 我想使用 eclipse 添加选项卡布
  • 如何在JPQL连接中有多个条件

    我想使用连接两个表JPQL SELECT FROM A LEFT JOIN B ON A ID B A ID AND B lng en 重要的部分是AND B lng en 这可能在JPQL JPA 2 0 不支持 ON 子句 但 JPA
  • 不同父母的 Z 指数

    我在 z 索引方面遇到了一些麻烦 这是我的简化布局 div div div div div div div div I need overlapper出现在面前child1但后面child2 我尝试摆弄 z 索引 但它不起作用 我想是因为堆
  • 不同的 DCOM / COM 安全设置意味着什么?

    我们的应用程序广泛使用 COM 和 DCOM 因此我们需要确保正确设置 COM 安全权限 我知道我可以在组件服务 MMC 管理单元下访问这些权限 并且可以在计算机的属性页下设置默认值 限制 在 DCOM Config 节点下 我可以深入了解
  • 如何重用计算列避免重复sql语句

    我有很多计算列 它们不断重复自己 一个在其他列里面 包括嵌套的 case 语句 我一直在寻找一种方法来做某事 有一个非常简化的版本 SELECT 1 2 AS A A 3 AS B B 7 AS C FROM MYTABLE 你可以尝试这样
  • 我们可以将 JsPlumb 流程图导出为 JSON 或 XML 吗?

    我创建了一个 JSPlumb 流程图 现在 我想将此流程图导出到其相应的 JSON 或 XML 脚本中以保存并执行各种操作 什么更兼容 他们中的任何一个都很好 请赐教我这一点 我开发的 JsPlumb 代码 在各个网站的帮助下 如下所示
  • Python hmac 和 C# hmac

    我们有一个 python 网络服务 它需要一个哈希作为参数 python中的hash就是这样生成的 hashed data hmac new ant bat hashlib sha1 print hashed data hexdigest