經過24小時的編程後,我終於破解了,我想製作一個C#WindowsForm應用程序,它向您展示散列十六進制字符串輸入的值,如hashcalc。 我只能使用它來輸入文本字符串,即使用Google搜索它。 爲了演示,輸入060201080808040602040909080909003583150369840500應該輸出d8f6b336a4df3336bf7de58a38b1189f6c5ce1e8 而不是a6879cb4510b18e8f41b3491ce474fd2ff9e2979 另外這是SHA1散列所以保持它只是在那,謝謝!從C#中的十六進制/二進制字符串計算SHA1
0
A
回答
0
我覺得我不太瞭解你的問題。你可以任意散列任何輸入和輸出。爲了達到這個目的,你很可能使用Encoding類和你選擇的編碼並調用GetBytes()方法。然後,您採取SHA1類並讓它計算散列值。而對於用戶文本,您可以告訴字符串類使用十六進制數字格式。這不僅適用於SHA1類;)
0
您需要導入命名空間:
using System.Security.Cryptography
,並呼籲
var hash = new SHA1CryptoServiceProvider().ComputeHash(inputBytes);
產生的哈希值。
如果你的問題是關於十六進制字符串轉換爲字節,這裏是一個完整的示例,演示如何解析輸入和格式化輸出:
var input = "060201080808040602040909080909003583150369840500";
// parse the input into a byte[]
var inputBytes = Enumerable.Range(0, input.Length/2)
.Select(i => input.Substring(i*2, 2))
.Select(s => byte.Parse(s, NumberStyles.HexNumber))
.ToArray();
var hash = new SHA1CryptoServiceProvider().ComputeHash(inputBytes);
var outputHexString = string.Join(" ",
hash.Select(b => b.ToString("X")).ToArray());
Console.WriteLine(outputHexString);
下面是它如何工作的:http://ideone.com/BE7ecU
1
對於這090505050509050009080003000605003569190380108300
我有3b8d562adb792985a7393a6ab228aa6e7526410a
,而不是3b8d562adb792985a7393a6ab228aa6e752641a
我認爲最後一個字節是錯誤的。
0
private void button1_Click(object sender, EventArgs e)
{
string input= "060201080808040602040909080909003583150369840500";
SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider();
byte[] hash = sha1.ComputeHash(ConvertHexStringToByteArray(input));
string delimitedHexHash = BitConverter.ToString(hash);
string hexHash = delimitedHexHash.Replace("-", "");
MessageBox.Show(hexHash);
}
public static byte[] ConvertHexStringToByteArray(string hexString)
{
if (hexString.Length % 2 != 0)
{
throw new ArgumentException(String.Format(CultureInfo.InvariantCulture, "The binary key cannot have an odd number of digits: {0}", hexString));
}
byte[] HexAsBytes = new byte[hexString.Length/2];
for (int index = 0; index < HexAsBytes.Length; index++)
{
string byteValue = hexString.Substring(index * 2, 2);
HexAsBytes[index] = byte.Parse(byteValue, NumberStyles.HexNumber, CultureInfo.InvariantCulture);
}
return HexAsBytes;
}
相關問題
- 1. SHA1哈希十六進制字符串
- 2. 十六進制字符串到二進制字符串
- 3. 二進制字符串到十六進制字符串java
- 4. Ruby:十六進制字符串到二進制字符串
- 5. C++長十六進制字符串轉換爲二進制
- 6. 將二進制長字符串轉換爲十六進制c#
- 7. 計算十六進制字符串的二進制補碼校驗和
- 8. Python從二進制字符串轉換爲十六進制
- 9. 從二進制轉換爲十六進制字符串
- 10. Javascript - 十進制字符串的十六進制字符串
- 11. 在C++中將十六進制十六進制字符標記爲十進制
- 12. 十六進制,八進制,二進制到十進制(C++)
- 13. 將二進制字符串轉換爲十六進制字符串C
- 14. 將十六進制字符串轉換爲二進制字符串,顯示所有4位十六進制值
- 15. 二進制字符串爲十六進制的Java
- 16. 轉換十六進制字符串爲二進制的SQL Server
- 17. 從十六進制字符
- 18. 將二進制十進制轉換爲十六進制,二進制和八進制字符串
- 19. 從十六進制字符串轉換爲十六進制字符數組
- 20. 轉換十六進制字符串十六進制值
- 21. 將字符串轉換爲十六進制到十六進制
- 22. 十六進制字符串到十六進制整數
- 23. python字符串與十六進制轉義十六進制值
- 24. 十六進制串&十六進制
- 25. INT爲十六進制字符串(C++)
- 26. C#十六進制字符串問題
- 27. 十六進制字符到實際十六進制字符的字符串
- 28. C++將十六進制字符串轉換爲十六進制char *十六進制數字
- 29. 在Perl中使用十六進制字符串的SHA1 HMAC
- 30. 將二進制字符串顯示爲十六進制DB2
所以你在SHA1中成功地散列了一個字符串,但實際上是想散列由你所擁有的十六進制字符串表示的「字節數組」? – olydis
如果是這樣的話,看看http://stackoverflow.com/questions/311165/how-do-you-convert-byte-array-to-hexadecimal-string-and-vice-versa – olydis