.NET框架提供了6种不同的哈希algorithm: MD5:16字节(散列时间500MB:1462毫秒) SHA1:20个字节(1644毫秒) SHA256:32个字节(5618毫秒) SHA384:48个字节(3839毫秒) SHA512:64个字节(3820毫秒) RIPEMD:20个字节(7066毫秒) 这些function中的每一个function都不相同 MD5是最快的,RIPEMD是最慢的。 MD5的优点是它适合内置的Guidtypes。 这使得它很容易用于识别。 然而,MD5很容易受到碰撞攻击 ,SHA1也是脆弱的,但程度较低。 我应该在什么条件下使用散列algorithm? 具体问题我真的很好奇,看到回答是: MD5不被信任? 在正常情况下,当你使用MD5algorithm而没有恶意的意图,没有任何第三方有任何恶意的意图时,你会期待任何冲突(意味着两个任意字节[]产生相同的散列) RIPEMD比SHA1好多less? (如果它更好)计算速度慢5倍,但散列大小与SHA1相同。 散列文件名(或其他短string)时获得非恶意冲突的几率是多less? (例如,具有相同MD5散列的2个随机文件名)(使用MD5 / SHA1 / SHA2xx)一般来说,非恶意冲突的几率是多less? 这是我使用的基准: static void TimeAction(string description, int iterations, Action func) { var watch = new Stopwatch(); watch.Start(); for (int i = 0; i < iterations; i++) { func(); } watch.Stop(); Console.Write(description); […]
什么是一个好的哈希函数? 我在大学的数据结构课程中看到了很多散列函数和应用程序,但是我大部分都知道要做一个好的散列函数是相当困难的。 作为避免碰撞的经验法则,我的教授说: function Hash(key) return key mod PrimeNumber end (mod是C和类似语言中的%运算符) 质数是散列表的大小。 我觉得这是一个比较好的避免碰撞和快速的function,但是我怎样才能做出更好的? string键对数字键有更好的散列函数吗?
对数据库存储进行哈希密码处理时,我总是使用正确的per-entry saltstring。 为了我的需要,将散列密码旁边的salt存储在散列密码旁边一直工作正常。 但是,有些人build议将salt与数据库分开存放。 他们的观点是,如果数据库被攻破,攻击者仍然可以build立一个彩虹表,考虑一个特定的盐串,以便一次破解一个帐户。 如果这个帐号拥有pipe理员权限,那么他甚至不需要破解其他任何人。 从安全的angular度来看,将盐储存在不同的地方是值得的吗? 考虑在同一台机器上使用服务器代码和数据库的Web应用程序。 如果盐被存储在该机器上的平面文件中,那么很可能如果数据库受到损害,那么盐文件也是如此。 有没有推荐的解决scheme?
以下是java.util.HashMap散列函数的源代码。 这些评论足以说明它的成就。 但是如何? 什么是^和>>>操作符在做什么? 有人可以解释代码实际上是如何做评论说的吗? /** * 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 […]
我想正确理解Perl中的哈希。 我不得不间歇地使用Perl一段时间,大多数时候我需要这样做,这主要与文本处理有关。 每一次,我都必须处理哈希,它会变得混乱。 我发现哈希的语法非常隐秘 散列和散列引用的一个很好的解释,它们的区别,当它们是需要的时候,将非常感激。
WordPress使用什么types的散列? 这是一个WordPress哈希的例子: $ P $ Bp.ZDNMM98mGNxCtHSkc1DqdRPXeoR。
我有一个string,使用下面的方法进行编码,有没有办法将这个string解码回原来的价值? 谢谢。 public synchronized String encode(String password) throws NoSuchAlgorithmException, IOException { String encodedPassword = null; byte[] salt = base64ToByte(saltChars); MessageDigest digest = MessageDigest.getInstance("SHA-256"); digest.reset(); digest.update(salt); byte[] btPass = digest.digest(password.getBytes("UTF-8")); for (int i = 0; i < ITERATION_COUNT; i++) { digest.reset(); btPass = digest.digest(btPass); } encodedPassword = byteToBase64(btPass); return encodedPassword; } private byte[] base64ToByte(String str) throws […]
你会从这个代码中看到它从哈希标签中加载内容URL。 反正只有从外部页面加载一个div元素。 $(function() { if(location.hash) $("#content_inload").load(location.hash.substring(1)); $("#nav a").click(function() { $("#content_inload").load(this.hash.substring(1)); }); }); 所以像.substring(#inload_content(1)) 但是这不起作用。 谢谢
我的网站上有一个滑动面板。 当它完成animation时,我像这样设置哈希 function() { window.location.hash = id; } (这是一个callback,并在之前分配的id )。 这很好,允许用户为面板添加书签,也可以让非JavaScript版本工作。 但是,当我更新哈希,浏览器跳转到该位置。 我猜这是预期的行为。 我的问题是:我怎么能防止这个? 即如何改变窗口的散列,但没有浏览器滚动的元素,如果散列存在? 某种event.preventDefault()的东西? 我正在使用jQuery 1.4和scrollTo插件 。 非常感谢! 更新 这是更改面板的代码。 $('#something a').click(function(event) { event.preventDefault(); var link = $(this); var id = link[0].hash; $('#slider').scrollTo(id, 800, { onAfter: function() { link.parents('li').siblings().removeClass('active'); link.parent().addClass('active'); window.location.hash = id; } }); });
给定一组长度相等的100个不同的string,如何量化string的SHA1摘要碰撞不太可能的概率?