sha1 implementeret i .NET med C#
Hej!jeg har meget brug for en fuldstændig solid og troværdig beregning af SHA1 værdien af et tal som jeg har fået opgivet i hex : 3045ae6f c8422f64 ed579528 d38120ea e12196d5
Jeg skal anvendes outputtet i binært format.
Jeg anvender .NETs sha1 og får at tallet i decimalform er 275585503993527016686210752207080241786546919125 og at hashværdien af dette tal binært er 101111110111010001011001001100110101010101110100011111110111111010101001011011101110000000001101010111011111010111100000100000111000101111101001101011010000001.
jeg anvender følgende implementation
(inspireret af lidt hjælp jeg fik tidligere :))
private void button1_Click(object sender, EventArgs e)
{
BigInteger num = BigInteger.Parse(textBox1.Text);
byte[] data = num.ToByteArray();
byte[] result;
StringBuilder sb = new StringBuilder();
SHA1 sha = new SHA1CryptoServiceProvider();
result = sha.ComputeHash(data);
for (int i = result.Length - 1; i >= 0; i--)
{
sb.Append(Convert.ToString(result[i], 2).PadLeft(8, '0'));
}
textBox2.Text = sb.ToString().TrimStart('0');
}
Jeg har så en helt anden checksum på det her som det altsammen skal matche med - og det gør det ikke, så jeg kan konstatere at noget må gå galt i min implementation...
Er der nogen der kan se om det er en korrekt måde at tage sha1 værdien af et tal på?
PS: Jeg har valgt at tro at det er af tallet fortolket som tal og ikke som tekststreng jeg skal beregne sha1 af - det giver noget helt andet og er helt hen i vejret hvis jeg fortolker det som en tekststreng, da det så naturligvis vil være helt forskelligt om min input er decimalt, med eller uden mellemrum osv og i specifikationens sammenhæng er værdierne entydige og absolutte nogle steder angivet i decimalform andre steder i hex.