在
Java和C#中计算SHA-1哈希值
我正在尝试在C#应用程序中复制Java应用程序的逻辑.部分原因是生成密码的SHA-1哈希.不幸的是,我无法从Java和C#获得相同的结果.
C# Output : 64 0a b2 ba e0 7b ed c4 c1 63 f6 79 a7 46 f7 ab 7f b5 d1 fa Java Output: 164 10a b2 ba e0 17b ed c4 c1 163 f6 179 a7 146 f7 ab 17f b5 d1 fa
为了弄清楚发生了什么,我一直在Eclipse和Visual Studio中使用Debugger.
1. Check values of byte[] key: Java: { 84,101,115,116 } C# : { 84,116 } 2. Check value of byte[] hash: Java: { 100 10 -78 -70 -32 123 ... } C# : { 100 10 78 186 224 123 ... }
我已经阅读了关于这个主题的其他帖子,主要是指输入字符串编码,但这些似乎没有帮助我.我的猜测是这与有符号和无符号字节有关,但我在这条轨道上没有取得多大进展.任何帮助将不胜感激.
谢谢,
Karle
Java版本:
public void testHash() { String password = "Test"; byte[] key = password.getBytes(); MessageDigest md = MessageDigest.getInstance("SHA-1"); byte[] hash = md.digest(key); String result = ""; for ( byte b : hash ) { result += Integer.toHexString(b + 256) + " "; } System.out.println(result); }
C#版本:
public void testHash() { String password = "Test"; byte[] key = System.Text.Encoding.Default.GetBytes(password); SHA1 sha1 = SHA1Managed.Create(); byte[] hash = sha1.ComputeHash(key); String result; foreach ( byte b in hash ) { result += Convert.ToInt32(b).ToString("x2") + " "; } Console.WriteLine(result); }
解决方法
原文地址:https://www.jb51.cc/java/126467.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。