Tag: hash

为什么默认的Object.toString()返回hashCode的hex表示?

我很好奇为什么Object.toString()返回这个: return getClass().getName() + “@” + Integer.toHexString(hashCode()); 与此相反: return getClass().getName() + “@” + hashCode(); 将哈希码显示为hex而不是十进制有什么好处?

用Java生成X509Certificate的主题哈希

我目前正在尝试使用Java Security API和BouncyCastle生成主题哈希。 当我使用Openssl库时,这就是我的工作: openssl x509 -in /Users/Sn0wfreezeDev/Downloads/Test.pem -hash 这会生成一个短的8位数哈希值1817886a 这是我的Java代码 X509Certificate cert = CertManager.getCertificate(number, c); MessageDigest sha1 = MessageDigest.getInstance(“SHA1″); System.out.println(” Subject ” + cert.getSubjectDN()); System.out.println(” Issuer ” + cert.getIssuerDN()); sha1.update(cert.getSubjectDN().getName().getBytes()); String hexString = bytesToHex(sha1.digest()); System.out.println(” sha1 ” + hexString); System.out.println();

是否有可能从MD5和Java恢复消息?

我有以下代码。 String plaintext = “HelloWorld”; MessageDigest m = MessageDigest.getInstance(“MD5”); m.reset(); m.update(plaintext.getBytes()); byte[] digest = m.digest(); BigInteger bigInt = new BigInteger(1,digest); String hashtext = bigInt.toString(16); // Now we need to zero pad it if you actually want the full 32 chars. while(hashtext.length() < 32 ){ hashtext = "0"+hashtext; } 现在我想将它转换回原始字符串。 可能吗?

需要在Objective C中生成HMAC SHA256哈希,就像在Java中一样

我需要使用HMAC SHA256生成哈希。 我在Java中使用以下代码。 我需要Objective-C中的等效代码。 javax.crypto.Mac mac = javax.crypto.Mac.getInstance(type); javax.crypto.spec.SecretKeySpec secret = new javax.crypto.spec.SecretKeySpec(key.getBytes(), type); mac.init(secret); byte[] digest = mac.doFinal(value.getBytes()); StringBuilder sb = new StringBuilder(digest.length * 2); String s=””; for (byte b: digest) { s = Integer.toHexString(b); if (s.length() == 1) { sb.append(‘0’); } sb.append(s); } return sb.toString(); Key = YARJSuwP5Oo6/r47LczzWjUx/T8ioAJpUK2YfdI/ZshlTUP8q4ujEVjC0seEUAAtS6YEE1Veghz+IDbNQb+2KQ== 价值= id=456|time=19:10|nonce=8 输出= 4effffffd8ffffffce7cffffffc4ffffffc71b2f72ffffffdc21ffffffa1ffffffe0ffffffe62d32550b0771296bffffff9c1159ffffffdeffffff8675ffffff9928654c 我有这个Objective-Cfunction: […]

持久sha256哈希对象?

我需要一个Python / C / C ++ / Java实现,它可以暂停散列进度并将进度 存储在文件中,以便在稍后阶段从该文件中恢复进度。 无论使用上面列出的语言编写,它都应该在Python中正常工作。 建议您提供与“hashlib”配合使用的方法,但这不是必需的。 此外,如果已经存在这样的事情,那么链接就足够了。 对于一个想法 ,您的实现应该实现什么。 import hashlib import hashpersist #THIS IS NEEDED. sha256 = hashlib.sha256(“Hello “) hashpersist.save_state(sha256, open(‘test_file’, ‘w’)) sha256_recovered = hashpersist.load_state(open(‘test_file’, ‘r’)) sha256_recovered.update(“World”) print sha256_recovered.hexdigest() 这应该提供与我们使用标准sha256函数对“Hello World”进行简单散列相同的输出。 a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e

HashMap#hash(int)方法的说明

有人可以向我解释静态HashMap #hash(int)方法吗? 生成均匀分布的哈希值背后的理由是什么? /** * Applies a supplemental hash function to a given hashCode, which * defends against poor quality hash functions. This is critical * because HashMap uses power-of-two length hash tables, that * otherwise encounter collisions for hashCodes that do not differ * in lower bits. Note: Null keys always map to hash […]

Java SHA256向PHP SHA256输出不同的哈希值?

PHP代码: echo hash(‘sha256’, ‘jake’); PHP输出: cdf30c6b345276278bedc7bcedd9d5582f5b8e0c1dd858f46ef4ea231f92731d Java代码: String s = “jake”; MessageDigest md = MessageDigest.getInstance(“SHA-256”); md.update(s.getBytes(Charset.forName(“UTF-8”))); byte[] hashed = md.digest(); String s2 = “”; for (byte b : hashed) { s2 += b; } System.out.println(s2); Java输出: -51-1312107528211839-117-19-57-68-19-39-43884791-1141229-4088-12110-12-223531-11011529 我曾预料到两者会返回相同的结果。 显然,事实并非如此。 如何让两者相匹配或者不可能? 编辑:我犯了一个错误,认为我现在已经回答了这个问题。

集合的hashCode方法的最佳实现

我们如何决定集合的hashCode()方法的最佳实现(假设equals方法已被正确覆盖)?