PHP 中的 MACTripleDES

2023-11-27

我正在尝试获得与 C# 等效的 MAC TripleDESMACTripleDES class.

我尝试过以下mcrypt(),但这只是 TripleDES 中的编码。我需要获取与 C# 中生成的字符串等效的 MACTripleDES 字符串来验证消息。

我也看过PHP的hash_hmac()功能,但它没有提供使用 TripleDES 生成 MAC 的选项


我不确定,因为微软没有费心说出他们的类符合什么标准,但我怀疑这份 NIST 文件这就是 Microsoft 级正在计算的内容,仅使用三重 DES 代替 DES。

我想您必须使用 mcrypt 中的原语编写自己的方法。

编辑1:

受到赏金的启发,我用这两个示例展示了 PHP 和 C# 中的等效结果。

首先,C#:

using System;
using System.Text;
using System.Security.Cryptography;

namespace TDESMacExample
{
    class MainClass
    {
        public static void Main (string[] args)
        {
            var keyString = "012345678901234567890123";
            var keyBytes = Encoding.ASCII.GetBytes(keyString);
            var mac = new MACTripleDES(keyBytes);
            var data = "please authenticate me example number one oh one point seven niner";
            Console.WriteLine(data.Length);
            var macResult = mac.ComputeHash(Encoding.ASCII.GetBytes(data));
            Console.WriteLine(BitConverter.ToString(macResult));
            // B1-29-14-74-EA-E2-74-2D
        }
    }
}

接下来,PHP:

    <?php
    $data = 'please authenticate me example number one oh one point seven niner';
    $key = '012345678901234567890123'; // Key must be 24 bytes long
    $iv = '\x00\x00\x00\x00\x00\x00\x00\x00'; // All zero IV is required

    $cipher = mcrypt_cbc(MCRYPT_3DES, $key, $data, MCRYPT_ENCRYPT, $iv);
    $mac_result = substr($cipher, -8); // Last 8 bytes of the cipher are the MAC

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

PHP 中的 MACTripleDES 的相关文章

随机推荐

  • 如何无限滚动抓取网站?

    我想爬行这个网站 我写了一个蜘蛛 但它只爬首页 即前 52 项 我试过这段代码 from scrapy spider import BaseSpider from scrapy selector import HtmlXPathSelect
  • 使用facet_wrap时如何减少facet标签之间的垂直间距?

    我使用facet wrap绘制了按两个因素分组的二维面板 最小的例子 library ggplot2 ggplot mpg aes displ hwy geom point facet wrap cyl drv 每个面板顶部的标签有两行 我
  • 命令提示符和cmd有什么区别?

    我有 Windows 7 Windows 8 和 Windows 10 系统 它们的行为都很相似 当我在开始菜单中键入命令提示符并按 Enter 键时 会出现一个标题为 命令提示符 的窗口 我给了它蓝色背景和绿色文本 当我在命令行中输入 s
  • 是否可以更改 Selector xml 中 Button 的左侧可绘制部分?

    我有一个分配给按钮的左可绘制对象以及一个背景可绘制对象 我想提供一个选择器 以便当用户按下 聚焦 禁用按钮时 其外观会发生变化 我用于左侧可绘制的图像是一个红色的 x 我希望在按下或禁用按钮时将其替换为灰色 X 使用选择器可以做到这一点吗
  • Xcode 7.3:导入模块显示有删除线

    将 Xcode 升级到 7 3 后 我发现一些模块在导入时被删除 如下截图所示 But after adding the module so just pressing enter everything is fine What does
  • 蚂蚁路径风格图案

    规则是什么蚂蚁路径风格图案 令人惊讶的是 Ant 网站本身的信息却很少 蚂蚁风格的路径模式匹配spring框架 映射使用以下规则匹配 URL 匹配一个字符 匹配零个或多个字符 匹配路径中的零个或多个 目录 spring a z 匹配正则表达
  • DropDownList 不会在 SelectedIndexChanged 上回发

    我正在编写一个 ASP Net Web 表单 其中包含一些 DropDownList 控件 然后用户更改下拉列表之一中的选定项目 ASP Net 似乎不会处理 SelectedIndexChanged 事件 直到通过单击 提交 按钮提交表单
  • 有没有办法使用 GPG 密钥在 Git 中“自动签名”提交?

    有没有一种简单的方法可以让 Git 始终对创建的每个提交或标签进行签名 我尝试过类似的东西 alias commit commit S 但这并没有达到目的 我不想安装不同的程序来实现这一点 可以轻松实现吗 只是一个附带问题 也许提交不应该被
  • 如何从Python 2.7中以空格分隔的字符串中提取整数?

    我想从字符串中提取整数 其中整数由空格分隔 即 我怎么能这么做 Input I 1 15 163 132 Result 1 15 163 132 所以我写了一个像这样的函数 def getIt aStr collect i 0 while
  • Spring Hibernate Template 执行方法为 Oracle 上的计数查询返回什么对象类型?

    当针对 Oracle 数据库运行时 以下对象的运行时类型是什么春季休眠模板 Spring 2 5 和 Hibernate 3 3 2GA 代码返回其中 SQL 查询是一个计数查询 例如select count from table Stri
  • SQL 中的常量和包含文件

    是否可以在 TSQL 存储过程中包含一组 常量 值 我遇到一种情况 我使用整数字段来存储位值 并且我有一小组 常量 值 用于针对该字段插入 选择 DECLARE CostsCalculated int 32 DECLARE Aggregat
  • 使用 Mysql 检索最后插入的 id

    再会 我愿意检索 Mysql 中新插入的行的 id 值 我知道有 mysqli insert id 函数 但是 我无法指定表格 如果同时进行查询 可能会存在检索到错误 id 的风险 我正在使用 Node js MySQL 我不想冒险查询最高
  • 从 applicationContext.xml 读取环境变量

    我需要读取 web xml 中定义的环境变量
  • 静态方法中的局部变量也是静态的吗?

    我想知道如果我们在静态方法中声明它们 所有局部变量都会变成静态吗 例如 public static void A int x 3 2 changeX x for int i 0 i lt x length i System out prin
  • 如何在 Sympy 中进行函数组合?

    我想做类似的事情h f g x 并能够对 h 进行微分 例如h diff x 仅针对一个功能 例如h cos x 这实际上是可能的 并且文档说得很清楚 但对于函数组合则不太清楚 如果您已经这样做了 请向我展示一个示例或将我链接到相关文档 如
  • Guice 在 UI 线程之外创建 Swing 组件有问题吗?

    我正在使用 Google Guice 作为 IOC 容器开发 Java Swing 应用程序 一切进展顺利 存在一些用户界面问题 当标准 L F 替换为推送像素时 由于 Guice 的 Swing 组件在 UI 线程之外创建 因此 Subs
  • 何时使用socket.io以及何时使用ajax

    我一直在nodejs 中编程 研究了如何使用socket io 和ajax 调用节点服务器 socket io 是为了取代 ajax 而设计的吗 我很想知道在哪些情况下使用 socket io 比较好 哪些 ajax 更好 感谢您的意见 嗯
  • 没有可用的事务性 EntityManager

    我是 jpa 和 spring 世界的新手 目前正在对一个简单的方法进行一些单元测试 但仅当我在单元测试模式下运行测试类时才会收到此错误消息 java lang IllegalStateException No transactional
  • 如何使用poi在java中读取excel(.xlsx)?

    我正在尝试用java读取excel 我有以下代码 import java io FileInputStream import java io IOException import java io InputStream import jav
  • PHP 中的 MACTripleDES

    我正在尝试获得与 C 等效的 MAC TripleDESMACTripleDES class 我尝试过以下mcrypt 但这只是 TripleDES 中的编码 我需要获取与 C 中生成的字符串等效的 MACTripleDES 字符串来验证消