Tag: hash

通过在Java中打印Object获得的信息是什么意思?

让我说我有这个代码: Integer[] a= new Integer[5]; System.Out.println(((Object)a).toString()); 输出是得到的 [Integer@89fbe3 89fbe3是什么意思? 这是某种地址吗? 哈希码? 它对每个物体都是独特的吗? ,如果是这样 – 如果它是一个multithreading程序,它仍然是唯一的吗? 谢谢 !

使用char 生成MD5哈希

如何转换使用此方法获得的char []密码: char[] password = passwordInputField.getPassword(); 到MD5哈希? 通常我会使用下面的方法,但getBytes只与字符串兼容: MessageDigest md = MessageDigest.getInstance(“MD5”); md.update(password.getBytes()); String hashedPass = new BigInteger(1, md.digest()).toString(16);

Java MD5散列与C#MD5散列不匹配

我对加密/散列知之甚少。 我必须哈希加密密钥。 Java中的例子是这样的…… String encryptionKey = “test”; MessageDigest messageDigest = MessageDigest.getInstance(“MD5”); messageDigest.update(encryptionKey.getBytes(“UTF-8”), 0, encryptionKey.length()); byte[] encryptionKeyBytes = messageDigest.digest(); 现在纠正我,如果我错了,但上面的代码用MD5算法哈希字符串。 当我在C#中散列相同的字符串时,我想要相同的结果。 我目前的C#代码看起来像这样…… string encryptionKey = “test”; var md5 = MD5.Create(); var keyBytes = Encoding.UTF8.GetBytes(encryptionKey); byte[] encryptionKeyBytes = md5.ComputeHash(keyBytes); 但结束字节结果不匹配。 Java得到…… [0] 9 [1] -113 [2] 107 [3] -51 [4] 70 [5] 33 [6] -45 [7] 115 […]

如何以与List.hashCode()相同的方式计算流的哈希码

我刚刚意识到使用Stream.reduce(…)实现以下算法来计算流的哈希码是不可能的。 问题是哈希码的初始种子是1 ,它不是累加器的标识。 List.hashCode()的算法: int hashCode = 1; for (E e : list) hashCode = 31*hashCode + (e==null ? 0 : e.hashCode()); 您可能会认为以下内容是正确的但事实并非如此,尽管如果流处理没有拆分它会起作用。 List list = Arrays.asList(1,null, new Object(),4,5,6); int hashCode = list.stream().map(Objects::hashCode).reduce(1, (a, b) -> 31 * a + b); 似乎唯一合理的做法是获取Stream的Iterator并进行正常的顺序处理或首先将其收集到List 。

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 你能帮我吗?? 谢谢…

如何使用MessageDigest,Base64进行解码

我目前正在编码密码。 我必须解码密码。 这是要编码的代码。 我想把原始密码比作一下。 我研究过MessageDigest,它说这是一种单向方法。 不知道如何获取原始邮件。 我们有一个解码方法,但它没有给我原始密码 – Base64.decode。 public static synchronized String getMD5_Base64(String input) { if (!isInited) { isInited = true; try { digest = MessageDigest.getInstance(“MD5”); } catch (Exception ex) { } } if (digest == null) return input; // now everything is ok, go ahead try { digest.update(input.getBytes(“UTF-8”)); } catch (java.io.UnsupportedEncodingException ex) { […]

什么是Java 8中String键的替代散列?

Java 8为String键提供了替代散列,以在遇到大量密钥哈希码冲突时提高性能。 任何人都可以解释它是什么以及它将如何工作?

Base64编码对文件名安全吗?

Base64编码是否可以安全地用于Windows和Linux系统上的文件名? 根据我的研究,我发现用-或_替换结果的所有/字符应解决任何问题。 任何人都可以提供更多细节吗? 目前在Java中我使用以下代码: MessageDigest md5Digest = MessageDigest.getInstance(“MD5”); md5Digest.reset(); md5Digest.update(plainText.getBytes()); byte[] digest = md5Digest.digest(); BASE64Encoder encoder = new BASE64Encoder(); hash = encoder.encode(digest); hash.replace(‘/’,’_’);

结合字段哈希码的简洁方法?

如果实现GetHashCode的方法 – 它需要这样做的话 – 由Jon Skeet概述。 重复他的代码: public override int GetHashCode() { unchecked // Overflow is fine, just wrap { int hash = 17; // Suitable nullity checks etc, of course 🙂 hash = hash * 23 + field1.GetHashCode(); hash = hash * 23 + field2.GetHashCode(); hash = hash * 23 + field3.GetHashCode(); return hash; […]

需要内存有效的方法来存储大量的字符串(是:在Java中的HAT-Trie实现)

我正在处理一大组(5到2千万)字符串键(平均长度为10个字符) ,我需要将其存储在内存数据结构中,该结构在恒定时间或接近恒定时间内支持以下操作: // Returns true if the input is present in the container, false otherwise public boolean contains(String input) 就吞吐量而言,Java的Hashmapcertificate是令人满意的,但占用了大量内存。 我正在寻找一种内存效率高的解决方案,并且仍然支持良好的吞吐量(与散列相当或几乎一样好)。 我不关心插入/删除时间。 在我的应用程序中,我将仅执行插入(仅在启动时),并且随后将仅使用应用程序生命周期中的contains方法查询数据结构。 我读到HAT-Trie数据结构最接近我的需求。 我想知道是否有一个具有实现的库。 其他建议与实现的指针欢迎。 谢谢。