草庐IT

java - SHA-1 需要多长时间来创建哈希?

创建数据的SHA-1散列大约需要多长时间,需要多少处理能力?根据原始数据大小,这是否有很大差异?生成标准HTML文件的哈希值会比字符串“blah”花费更长的时间吗?C++、Java和PHP的速度如何比较? 最佳答案 你问了很多问题,希望我能逐一回答。SHA-1(以及许多其他设计为加密强度高的散列)基于对固定大小的数据block重复应用加密或解密例程。因此,在计算长字符串的哈希值时,该算法比计算小字符串的哈希值所花费的时间成比例地多。在数学上,我们说当使用SHA-1时,对长度为N的字符串进行哈希运算的运行时间为O(N)。因此,对HTM

Redis数据结构:Hash类型全面解析

Redis,作为一个开源的、内存中的数据结构存储系统,以其出色的性能和灵活的数据类型,广泛应用于缓存、消息队列、发布订阅系统等多种场景。在Redis的五种基本数据类型中,Hash类型是一种非常重要的数据类型。它可以存储键值对的集合,且能够用小于1毫秒的时间复杂度进行添加、删除、更新和查找操作,因此在实际应用中有着广泛的用途。在接下来的文章中,我将详细介绍Redis的Hash类型,包括它的内部实现、主要特性、常用命令以及应用场景。无论你是刚接触Redis的新手,还是已经有一定经验的开发者,我相信你都能从这篇文章中学到一些有用的知识。让我们一起深入了解Redis的Hash类型,探索它的魅力所在。文

java - JDK 中可用的 MessageDigest 的完整列表

我为此四处搜索,但似乎无法得到直接的答案。在Java中,可用的MessageDigests由您配置/安装的安全提供程序决定。但是假设只是正常的JDK8安装(在我的例子中是1.8.0_11),可用的哈希算法列表是什么?从文档中的示例来看,很明显MD5、SHA1和SHA-256是可用的,但我似乎无法获得完整的权威列表。此列表是否存在,或者我如何找到适合我的特定安装的列表? 最佳答案 除了JB的回答之外,我还想提出一个查询运行时可用算法的解决方案。这种方法当然很容易转换为Cipher、SecureRandom、Mac、KeyAgreeme

java - 计算多部分数据(多个字符串)的 md5 散列

我正在尝试创建多个字符串的[单个]md5哈希[在Java中]。这就是我想要的md5(string1,string2,string3,...,stringN)目前我正在尝试将所有字符串与一些很少使用的分隔符(如#)连接起来。也就是md5(string1#string2#...#stringN)这看起来很老套,我担心一些奇怪的字符串实际上将分隔符作为其中的一部分。最好的方法是什么? 最佳答案 这可能会更好:md5(md5(string1)+md5(string2)+...+md5(stringN))它会消除分隔符问题,但很难说它有多好。

java - 元素存在但 `Set.contains(element)` 返回 false

一个元素如何不包含在原始集合中,而是包含在其未修改副本中?原始集不包含该元素,而其副本包含该元素。Seeimage.以下方法返回true,尽管它应该始终返回false。c和clusters的实现都是HashSet。publicstaticbooleanconfumbled(Setc,Set>clusters){return(!clusters.contains(c)&&newHashSet(clusters).contains(c));}调试显示元素是包含在原始元素中,但Set.contains(element)出于某种原因返回false。Seeimage.有人可以向我解释一下这是怎么

java - 使用两个(或更多)对象作为 HashMap 键

我想将某些对象存储在HashMap中。问题是,通常您只使用单个对象作为键。(例如,您可以使用一个字符串。)我想要使用多个对象来做什么。例如,一个类和一个字符串。有没有一种简单明了的方法来实现它? 最佳答案 您的key必须实现hashCode和equals。如果是SortedMap,还必须实现Comparable接口(interface)publicclassMyKeyimplementsComparable{privateIntegeri;privateStrings;publicMyKey(Integeri,Strings){th

java - Guava 与 Apache Commons Hash/Equals 构建器的对比

我想知道Guava与ApacheCommons在equals和hashCode构建器方面的主要区别是什么。等于:Apache公地:publicbooleanequals(Objectobj){if(obj==null){returnfalse;}if(obj==this){returntrue;}if(obj.getClass()!=getClass()){returnfalse;}MyClassother=(MyClass)obj;returnnewEqualsBuilder().appendSuper(super.equals(obj)).append(field1,other.f

java - 在 jar 版本中包含 git commit hash

我正在使用Maven,我的目标是在版本号中包含gitcommithash。类似于:1.1.{git_hash}。我正在尝试关注这个tutorial.问:是否有可能以某种方式覆盖pom文件的版本元素中指定的版本号? 最佳答案 实现此目的的一种方法是使用git-commit-id-plugin.将其添加到pom.xml的build部分的插件列表中:pl.project13.mavengit-commit-id-plugin${git-commit-id-plugin.version}get-the-git-infosrevisionva

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

我需要使用HMACSHA256生成哈希。我在Java中使用以下代码。我需要Objective-C中的等效代码。javax.crypto.Macmac=javax.crypto.Mac.getInstance(type);javax.crypto.spec.SecretKeySpecsecret=newjavax.crypto.spec.SecretKeySpec(key.getBytes(),type);mac.init(secret);byte[]digest=mac.doFinal(value.getBytes());StringBuildersb=newStringBuilder

java - sha-1 是否会为小于 160 位的输入消息产生冲突?

我有一个128位ID,我想对其执行单向哈希,但我不想为输入消息获得相同的摘要。有谁知道sha-1或替代方案是否保证不会为小于其输出摘要大小的消息集产生冲突?这至少在理论上是可能的……我也考虑过使用RSA,并丢弃私钥给我一个单向加密,但我需要将结果存储在一个32字符的数据库字段中,并且我可用的加密方案不会产生任何小的够了。欢迎提出对原始值进行确定性、不可逆和无碰撞转换的另一种方法的任何建议。 最佳答案 加密哈希可以很好地近似给定输入的随机数。那么在获得相同的160位之前,您需要在一个房间中使用多少个随机散列?关于平方根(免责声明:我不