2011-08-24 49 views
1

我正在嘗試將webrequest發佈到另一個站點。該另一個網站在ASP中。 我通過以下功能發送sha256 ecnrypted格式的其中一個查詢值。SHA256 asp to asp.net問題

另一個網站正在檢查ASP格式的值。這些值不匹配。

這是我的.net 4.0函數用於SHA256轉換。我正在將值爲「[email protected]D」的輸入傳遞給以下功能。 它返回「AFF83D621AE6FDCEA7B191A64F470EB288BF7B996EA00A9D6FBE444A48AD9508」

但ASP網站預計值「e3ecd14c92a6ce3ed864e7e8feb9167c3d03142fccdd3bf6a2cd62385c122977」此相同的字符串,這就是爲什麼我的調用失敗

public string EncryptSHA256Managed(string input) 
    { 

     UnicodeEncoding uEncode = new UnicodeEncoding() ; 
     byte[] bytClearString = uEncode.GetBytes(input);  
     SHA256Managed sha = new SHA256Managed() ; 
     string strHex = string.Empty; 
     byte[] hash = sha.ComputeHash(bytClearString) ;  
     string hex = BitConverter.ToString(hash); 
     hex = hex.Replace("-", ""); 
     return hex; 
    } 
+0

沒關係,我找到了解決方案!我更新了代碼中的以下行:byte [] bytClearString = Encoding.UTF8.GetBytes(input); – user228777

回答

0

首先,你需要使用一個已知的SHA256實現,如果要弄清楚要麼是正確的; Firefox的Hackbar插件有一個,Notepad ++的Unicode版本有一個,Jacksum 1.7.0將粘貼到一個文件中工作(注意多餘的字符),並且有Web版本 http://www.webutils.pl/index.php?idx=sha1 http://hash.online-convert.com/ SHA256發電機

這些都說明e3ecd14c92a6ce3ed864e7e8feb9167c3d03142fccdd3bf6a2cd62385c122977作爲ANSI字符串「[email protected]D」正確的結果。

機會是,你的UCS-2在.NET端的「Unicode」實現是什麼導致不同的結果。

您在傳統ASP中使用哪些代碼?

+0

沒關係,我找到了解決方案!我更新了代碼中的以下行:byte [] bytClearString = Encoding.UTF8.GetBytes(input); – user228777