问题标签 [cryptographic-hash-function]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
hash - 为什么 MD5 哈希值不可逆?
我一直想知道的一个概念是加密哈希函数和值的使用。我知道这些函数可以生成一个唯一且几乎不可能反转的哈希值,但这是我一直想知道的:
如果在我的服务器上,我会在 PHP 中生成:
当您通过 MD5 函数运行相同的字符串时,您会在 PHP 安装中得到相同的结果。一个过程被用来从一些初始值产生一些价值。
这是否意味着有某种方法可以解构正在发生的事情并反转哈希值?
这些函数是什么使生成的字符串无法回溯?
c# - C# SHA-1 与 PHP SHA-1 ...不同的结果?
我正在尝试从字符串计算 SHA-1 哈希,但是当我使用 php 的 sha1 函数计算字符串时,我得到的结果与我在 C# 中尝试时不同。我需要 C# 来计算与 PHP 相同的字符串(因为来自 php 的字符串是由我无法修改的第 3 方计算的)。如何让 C# 生成与 PHP 相同的哈希?谢谢!!!
字符串 = s934kladfklada@a.com
C# 代码(生成 d32954053ee93985f5c3ca2583145668bb7ade86)
PHP 代码(生成 a9410edeaf75222d7b576c1b23ca0a9af0dffa98)
c# - 我应该选择哪种加密哈希函数?
.NET 框架附带 6 种不同的散列算法:
- MD5:16 字节(哈希 500MB 的时间:1462 毫秒)
- SHA-1:20 字节(1644 毫秒)
- SHA256:32 字节(5618 毫秒)
- SHA384:48 字节(3839 毫秒)
- SHA512:64 字节(3820 毫秒)
- RIPEMD:20 字节(7066 毫秒)
这些功能中的每一个都执行不同的操作;MD5 是最快的,RIPEMD 是最慢的。
MD5的优点是适合内置Guid类型;它是类型 3 UUID 的基础。SHA-1 哈希是类型 5 UUID 的基础。这使得它们非常容易用于识别。
然而,MD5 容易受到碰撞攻击,SHA-1 也容易受到攻击,但程度较轻。
在什么情况下我应该使用哪种哈希算法?
我真的很想看到答案的具体问题是:
MD5不可信吗?在正常情况下,当您使用没有恶意的 MD5 算法并且没有第三方有任何恶意时,您会期望任何冲突(意味着两个任意字节 [] 产生相同的哈希)
RIPEMD 比 SHA1 好多少?(如果它更好的话)它的计算速度慢了 5 倍,但哈希大小与 SHA1 相同。
散列文件名(或其他短字符串)时发生非恶意冲突的几率是多少?(例如 2 个具有相同 MD5 哈希的随机文件名)(使用 MD5 / SHA1 / SHA2xx) 一般来说,非恶意冲突的几率是多少?
这是我使用的基准:
hash - 是否有任何已发表的研究表明对 MD5 的原像攻击迫在眉睫?
我继续阅读关于 MD5 已损坏、破产、过时且永远不会使用的信息。这让我很生气。
事实上,对 MD5 的碰撞攻击现在相当容易。有些人将碰撞攻击归结为一门艺术,甚至我们可以用它们来预测选举。
我发现大多数MD5“破碎”的例子都不那么有趣。即使是著名的 CA 证书黑客攻击也是一种碰撞攻击,这意味着可以证明该方同时生成了 GOOD 和 EVIL 证书。这意味着,如果 EVIL CA 进入野外,则可以证明它是从拥有良好 CA 的人那里泄露出来的,因此无论如何都是值得信任的。
更令人担忧的是原像或第二原像攻击。
对 MD5 进行原像攻击的可能性有多大?目前是否有任何研究表明它迫在眉睫?MD5 易受碰撞攻击这一事实是否使其更容易遭受原像攻击?
java - MySQL MD5 和 Java MD5 不相等
MySQL中的下一个函数
MD5( 'secret' )
生成5ebe2294ecd0e0f08eab7690d2a6ee69
我想要一个 Java 函数来生成相同的输出。但
生成
cryptography - 多重冲突与对哈希函数的第一次或第二次原像攻击有什么区别?
哈希函数中的多重冲突与第一或第二原像之间有什么区别。
第一次原像攻击:给定一个哈希 h,找到一条消息 m 使得
哈希(m)= h。
第二原像攻击:给定一个固定的消息 m1,找到一个不同的消息 m2 使得
哈希(m2)=哈希(m1)。
多重碰撞攻击:生成一系列消息 m1, m2, ... mN,这样
哈希(m1) = 哈希(m2) = ... = 哈希(mN)。
维基百科告诉我们,原像攻击与碰撞攻击的不同之处在于,有一个固定的哈希或消息被攻击。
我对发表以下声明的论文感到困惑:
该技术不仅可以有效地搜索碰撞,而且还适用于探索 MD4 的第二原像。关于第二原像攻击,他们表明随机消息是概率为 2^–122 的弱消息,只需一次 MD4 计算即可找到与弱消息对应的第二原像。
如果我理解作者似乎在说什么,他们开发了一种多重冲突攻击,其中包含足够大的消息集,给定一条随机消息,它与他们的多重冲突中的一个重叠的可能性很大,尽管非常小。碰撞。
我在许多论文中看到了类似的论点。我的问题什么时候攻击不再是多重碰撞攻击并成为第二次原像攻击..
如果多重冲突与 2^300 条其他消息发生冲突,这是否算作第二个原像,因为多重冲突可用于计算与之冲突的其中一条消息的“原像”?分界线在哪里,2^60、2^100、2^1000?
如果您可以生成所有以 23 开头的哈希摘要的原像,会怎样?当然它不符合原像的严格定义,但它也非常肯定是密码散列函数中的一个严重缺陷。
如果某人有一个大的多重冲突,那么他们总是可以恢复任何哈希与多重冲突冲突的消息的图像。例如,
散列(m1) = 散列(m2) = 散列(m3) = h
有人请求 h 的原像,他们以 m2 响应。这什么时候不再愚蠢而成为真正的攻击?
经验法则?知道评估哈希函数攻击的任何好的资源吗?
相关链接:
objective-c - Objective-C 中的 MD5 算法
如何在 Objective-C 中计算 MD5?
cryptography - 单向哈希函数如何工作?(已编辑)
我阅读了有关 md5 哈希的 Wikipedia 文章,但我仍然无法理解如何无法将哈希“重构”回原始文本。
有人可以向对密码学知之甚少的人解释这是如何工作的吗?函数的哪一部分使它成为单向的?
.net - 如何解密使用 HMACSHA1 加密的字符串?
我是一个加密新手,试图在系统之间来回传递一些值。我可以加密该值,但似乎无法弄清楚如何在另一端解密。我使用 VB.NET 创建了一个简单的 Windows 窗体应用程序。尝试输入一个值和一个密钥,加密然后解密以获得原始值。到目前为止,这是我的代码。非常感谢任何帮助。谢谢。
c# - 将 md5 哈希字节数组转换为字符串
如何将哈希结果(字节数组)转换为字符串?
我需要转换byteHashedPassword
为字符串。