第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C# HMACSHA256 給出的結(jié)果與 PHP hash_hmac 不同

C# HMACSHA256 給出的結(jié)果與 PHP hash_hmac 不同

PHP
阿晨1998 2023-10-21 17:22:54
我在 php 中有以下代碼: demofunction generateHash($hashSecret,$postData) {    ksort($postData);        $message="";        $appendAmp=0;    foreach($postData as $key => $value) {            if (strlen($value) > 0) {                if ($appendAmp == 0) {                    $message .= $key . '=' . $value;                    $appendAmp = 1;                } else {                    $message .= '&' . $key . "=" . $value;                }            }        }    $secret = pack('H*', $hashSecret);    return hash_hmac('sha256', $message, $secret);}$postData = array(    "cardNum" =>  "5123456789012346",    "cardExp" =>  2105,    "cardCVC" =>  123,    "holderName" => "John Doe",    "mobileNumber" => "20100000000000");$secureHash= 'C0DF9A7B3819968807A9D4E48D0E65C6';$hashSecret = generateHash($secureHash,$postData);echo $hashSecret;//輸出6975f8f502e5972722a6d8760cc558e7867f36a312a5d336c4ba983dcfb81691 //以及以下c#演示public static void Main(){    Console.Write(CreateToken("cardCVC=123&cardExp=2105&cardNum=5123456789012346&holderName=John Doe&mobileNumber=20100000000000","C0DF9A7B3819968807A9D4E48D0E65C6"));} private static string CreateToken(string message, string secret){  var encoding = new System.Text.UTF8Encoding();  byte[] keyByte = encoding.GetBytes(secret);  byte[] messageBytes = encoding.GetBytes(message);  using (var hmacsha256 = new HMACSHA256(keyByte))  {    byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);    return BitConverter.ToString(hashmessage).Replace("-","");  }}//輸出:26FFE2E29513304F96D444CB69210657B4E44E837B7C8E8947C667B344594F18演示我需要修改我的c#代碼以匹配從php生成的值更新:我嘗試過在線 sha 生成器,它給出了我的 C# 結(jié)果
查看完整描述

1 回答

?
慕婉清6462132

TA貢獻1804條經(jīng)驗 獲得超2個贊

經(jīng)過多次試驗,我發(fā)現(xiàn) PHP pack('H*', $hashSecret) 導致結(jié)果不同,所以我添加了以下方法:


public static byte[] Pack(string key)

{

    key = key.Replace("-", "");

    byte[] raw = new byte[key.Length / 2];

    for (int i = 0; i < raw.Length; i++)

    {

        raw[i] = Convert.ToByte(key.Substring(i * 2, 2), 16);

    }

    return raw;

}


查看完整回答
反對 回復 2023-10-21
  • 1 回答
  • 0 關注
  • 351 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號