我目前正在從事一個將Python 3.2程序轉換爲C#的項目。在Python 3.2中,C#等價於十六進制數?
在python程序中有一行代碼,它返回一個雙倍長度的字符串對象,只包含十六進制數字。
的代碼在Python程序中的位是:
if sha1.hexdigest().upper() == hash_string:
#do whatever
我一直在嘗試和失敗,以找到在Python中hashlib在hexdigest的C#等效。
在C#中,我已經在字節數組中獲得了SHA1哈希,但是我試圖執行相同的十六進制的所有方法都未能提供與hash_string的匹配 - 這是sha1的十六進制數應該與相符。
我不確定問題是我用來模擬十六進制的方法還是我用來生成sha1哈希的方法 - 所以如果有人使用了十六進制方法,他們知道的作品,這將使我能夠消除至少一個可能的問題的原因。
我代替hexdigest的使用在目前的方法是:
string hexaHash = "";
foreach (byte b in sha1result)
{
hexaHash += String.Format("{0:x2}", b);
}
string result = hexaHash;
編輯:捂臉沒關係,我只是工作了我的問題是什麼。當在python中生成sha1哈希時,它使用小寫的十六進制字符串來完成它。在我的C#中,它是一個大寫的十六進制字符串。所以我猜想我使用的最簡單的等價物很好。對不起浪費人們的時間。
總是時來自外部系統的比較字符串保證雙方都是大寫的,因爲情況下,可以在外部系統和代碼將無法最終改變,所以總是做'localValue.ToUpper()== externalValue.ToUpper( )' – sll 2012-04-05 15:48:31
Dup - http://stackoverflow.com/questions/3899644/convert-python-to-c-sharp – 2012-04-05 15:48:38