PHP中的MACTripleDES
我试图获得相当于C# MACTripleDES
类的MAC TripleDES。
我试过跟随mcrypt()
,但这只是在TripleDES中编码。 我需要获得一个等效的MACTripleDES字符串作为在C#中生成的字符串来validation消息。
我也查看了PHP的hash_hmac()
函数,但它没有给出使用TripleDES生成MAC的选项
我不确定,因为微软并不打算说他们的类符合什么标准,但我怀疑这个NIST文档是微软类计算的,只使用三重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:
"; ?>
MAC只是CBC加密数据的最后八个字节。 如果key,IV和padding方法匹配,则应该只能使用这些字节。
有关MAC定义的更多详细信息,请参见FIPS-81的附录F ,DES操作模式 。
上述就是C#学习教程:PHP中的MACTripleDES分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/958452.html