就像標題所說的那樣,我正在尋找C#的HMAC-SHA1實現。這將在微框架下運行,所以我不能使用內建的System.Security.Cryptography類。需要針對C#Micro Framework的HMAC-SHA1實現
如果我能理解原始代碼,那麼移植一個庫是沒有問題的。我在Javascript中找到了一個源代碼,並驗證它與期望值匹配,但我無法移植,因爲我無法始終告訴哪些類型的值。
那麼任何人都知道任何C#(或Java(或其他強類型))實現嗎?
就像標題所說的那樣,我正在尋找C#的HMAC-SHA1實現。這將在微框架下運行,所以我不能使用內建的System.Security.Cryptography類。需要針對C#Micro Framework的HMAC-SHA1實現
如果我能理解原始代碼,那麼移植一個庫是沒有問題的。我在Javascript中找到了一個源代碼,並驗證它與期望值匹配,但我無法移植,因爲我無法始終告訴哪些類型的值。
那麼任何人都知道任何C#(或Java(或其他強類型))實現嗎?
Bouncycastle C#加密庫包含許可的C#源代碼。提取Org.BouncyCastle.Crypto.Digests.Sha1Digest
和Org.BouncyCastle.Crypto.Macs.HMac
類並將它們合併到代碼中應該是微不足道的。它似乎沒有任何依賴於這些.NET類,但我不知道微觀框架中包含哪些類。
這個工作原理相對容易,只需要最少的輔助類就可以完成,並且與我的參考例子相匹配。謝謝。 – Hounshell
sphlib是一個開源庫,它包含C和Java中許多哈希函數(包括SHA-1)的優化代碼。 Java版本還包含一個通用的HMAC實現(可與任何實現的散列函數一起使用)。由於代碼是基本的Java,只有基本的整數操作(它也可以在J2ME平臺上運行),因此將其轉換爲C#應該很容易(您只需要將Java的'>>>
''無符號右移運算符更改爲轉換爲相應的C#無符號類型,然後進行常規右移)。
通過使用Mono項目提供的代碼,您可以擁有與Microsoft相同的API的C#版本。這是麻省理工學院X11許可,所以很容易在任何項目內重複使用。請參閱:
https://github.com/mono/mono/blob/master/mcs/class/corlib/System.Security.Cryptography/HMACSHA1.cs
https://github.com/mono/mono/blob/master/mcs/class/corlib/System.Security.Cryptography/HMAC.cs
和相關文件。還有單元測試,您可以使用它來確保它在您的平臺上正常工作。
你檢查了嗎? http://www.aarongifford.com/computers/sha.html。似乎已在'C'中完成。 –