gpt4 book ai didi

c# - PHP 中的 MACTripleDES

转载 作者:可可西里 更新时间:2023-11-01 13:50:56 30 4
gpt4 key购买 nike

我正在尝试获得与 C# MACTripleDES 等效的 MAC TripleDES类。

我试过关注 mcrypt() ,但这只是 TripleDES 中的编码。我需要获得一个等效的 MACTripleDES 字符串作为在 C# 中生成的字符串来验证消息。

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

最佳答案

我不确定,因为微软懒得说他们的类符合什么标准,但我怀疑 this NIST document 是微软类正在计算的,只使用三重 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>";
?>

关于c# - PHP 中的 MACTripleDES,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10533604/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com