2012-08-30 46 views
-2

我似乎無法找到關於這個校驗和算法的很多信息,並沒有涉及到C#,我有一個scenerio如下;在C#中的Mod 256校驗和的例子#

我有數據,例如串:

string input = "hello world" 

,我想創建一個校驗和,那我以後可以用相同的字符串

+1

你能更好地描述你想要做什麼嗎? – BlueM

回答

1

(byte) input.GetHashCode()驗證吧......? ...

+0

這是否使用Mod 256? – Jamie

+0

只是反編譯的代碼:http://pastebin.com/CdXBYKBY ...任何理由,爲什麼它應該是Mod256?校驗和是校驗和,不是嗎? –

+1

'(byte)input.GetHashCode()'有你的mod 256. –

2

也許這對你已經足夠了。如果您使用一個字節作爲校驗和,Mod 256將自動隱含。

string s = "hello world"; 
    byte[] data = Encoding.ASCII.GetBytes(s); 
    byte check = 0; 
    for (int i = 0; i < data.Length; i++) 
    { 
    check += data[i]; 
    } 
+0

我想使用一個字節作爲校驗和 – Jamie

+1

正如你看到的校驗和是我的例子中的一個字節。請參閱「檢查」 – BlueM

+0

它仍然不清楚字節是簡單地添加還是從您的問題異或。所以請隨意更改添加到異或。所以在我們掌握更多信息之前,這些都是可以幫助的。 – BlueM

0

轉換的字符串字節數組和calc校驗:

string input = "hello world"; 
System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding(); 
var array = enc.GetBytes(input); 
byte chksum = 0; 
foreach(byte data in array) 
{ 
    chksum += data; 
} 
0

校驗,默認情況下,是在整個數據的一個簡單的二進制XOR以產生內容的單一數字的描述符。通常情況下,XOR校驗和的寬度爲32或64,以匹配平臺單詞的大小以使其更快計算,這些和分別爲2^32和2^64。如果有人說modulo256,那麼他可能需要一個單字節,8位,因此模256校驗和。

這就是你剛纔簡單地從字符串GetBytes,並將它們全部XOR。