Tag: sha1

Java和C#之间的不同SHA1哈希结果

我有一个很大的问题。 我使用这个C#函数来编码我的消息: byte[] buffer = Encoding.ASCII.GetBytes(file_or_text); SHA1CryptoServiceProvider cryptoTransformSHA1 = new SHA1CryptoServiceProvider(); String hashText = BitConverter.ToString(cryptoTransformSHA1.ComputeHash(buffer)).Replace(“-“, “”); 在java方面,我使用这个片段: MessageDigest md = MessageDigest.getInstance(“SHA-1”); byte[] sha1hash = new byte[40]; md.update(text.getBytes(“iso-8859-1”), 0, text.length()); sha1hash = md.digest(); 我的信息是:Block | Notes | Text!£$%&/()=?^€> <{}ç°§;:_-。,@#ùàòè+ 我有这个结果: (C#) 8EDC7F756BCECDB99B045FA3DEA2E36AA0BF0875 (Java) 2a566428826539365bb2fe2197da91395c2b1b72 你能帮我吗?? 谢谢…

Java的MessageDigest SHA1算法返回的结果与php的SHA1函数不同

我有一个带有用户名和密码的SQL表。 密码使用MessageDigest的digest()方法进行编码。 如果我编码密码 – 让我们说“abcdef12” – 使用MessageDigest的digest()方法然后将其转换为hex值,则String与使用PHP的SHA1方法执行相同操作的情况不同。 我希望这些值完全相同。 用于对密码进行编码的代码: MessageDigest md = MessageDigest.getInstance(“SHA-1”); byte[] passbyte; passbyte = “abcdef12”.getBytes(“UTF-8”); passbyte = md.digest(passbyte); 使用此方法将String转换为hex: public static String convertStringToHex(String str) { char[] chars = str.toCharArray(); StringBuffer hex = new StringBuffer(); for (int i = 0; i < chars.length; i++) { hex.append(Integer.toHexString((int) chars[i])); } return hex.toString(); } 密码: abcdef12 […]

比较Java中的两个hex字符串

我正在使用Java中的Chord协议实现一个简单的DHT。 细节并不重要,但我坚持的是我需要哈希字符串,然后查看一个哈希字符串是否“小于”另一个。 我有一些使用SHA1计算哈希值的代码,它返回一个40位长的hex字符串(Java中的String类型),例如: 69342c5c39e5ae5f0077aecc32c0f81811fb8193 但是,我需要能够比较其中两个,以便告诉我,例如: 0000000000000000000000000000000000000000 小于: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 这是完整的值范围,因为40位数字符串实际上代表0123456789ABCDEF范围内的40个hex数字 有谁知道如何做到这一点? 提前致谢。

可以在流上计算SHA-1算法吗? 内存占用少?

我正在寻找一种方法来计算非常大的文件的SHA-1校验和,而不必立即将它们完全加载到内存中。 我不知道SHA-1实现的细节,因此想知道是否有可能这样做。 如果您了解SAX XML解析器,那么我所寻找的将是类似的东西:通过一次只将一小部分加载到内存来计算SHA-1校验和。 我发现的所有示例(至少在Java中)总是依赖于将文件/字节数组/字符串完全加载到内存中。 如果你甚至知道实现(任何语言),那么请告诉我!