散列函数中的多重碰撞与第一或第二前映像之间的区别是什么.
第一个preimage攻击:给定一个哈希h,找到一个这样的消息
hash(m)= h.
第二个preimage攻击:给定一个固定的消息m1,找到一个不同的消息m2
hash(m2)= hash(m1).
多冲突攻击:生成一系列消息m1,m2,... mN,这样
hash(m1)= hash(m2)= ... = hash(mN).
维基百科告诉我们,preimage攻击与碰撞攻击的不同之处在于存在被攻击的固定哈希或消息.
令我感到困惑的是那些make语句如下:
这些技术不仅有效地搜索碰撞,而且还适用于探索MD4的第二原像.关于第二个原像攻击,他们发现随机消息是一个概率为2 ^ -122的弱消息,它只需要一次性的MD4计算来找到对应于弱消息的第二个原像.
如果我理解作者似乎在说的是他们已经开发了一个多冲突攻击,其中包含一组足够大的消息,这些消息给出了随机消息,那么它与其中一个消息重叠的可能性非常小.碰撞.
我在许多论文中看到了类似的论点.我的问题是什么时候攻击不再是多次碰撞攻击并成为第二次原像攻击
如果多次碰撞与2 ^ 300其他消息发生碰撞,那么它会被计为第二个原像,因为多次碰撞可以用来计算它碰撞的其中一个消息的"前映像"吗?分界线在哪里,2 ^ 60,2 ^ 100,2 ^ 1000?
如果您可以生成以23开头的所有哈希摘要的原像,该怎么办?当然它不符合preimage的严格定义,但它也是加密哈希函数中的一个严重缺陷.
如果某人有大的多次碰撞,那么他们总能恢复与多次碰撞相冲突的任何消息的图像.例如,
hash(m1)= hash(m2)= hash(m3)= h
有人请求h的原像,他们用m2回复.什么时候停止愚蠢并成为真正的攻击?
经验法则?知道有关评估哈希函数攻击的任何好资源吗?
相关链接:
cryptography hash-collision cryptanalysis cryptographic-hash-function
我看到有人用MD5多次加密用户密码以提高安全性.我不确定这是否有效,但看起来并不好.那么,它有意义吗?
md5 cryptography password-hash cryptographic-hash-function pbkdf2
我收到ObjectDisposedException:安全句柄已关闭.
这是我的代码:
我正在尝试创建一个接口并实现类,这将使我能够获取一个字符串,附加一个已知的密钥,为此字符串和密钥计算MD5哈希,并返回计算的哈希:
public interface ISignService
{
string GetSignature(string str);
}
public class SignService : ISignService
{
private readonly ISignSettings _signSettings;
private readonly HashAlgorithm _hashAlgo;
public SignService(ISignSettings signSettings)
{
_signSettings = signSettings;
_hashAlgo = MD5.Create();
}
public string GetSignature(string str)
{
var strWithKey = str + _signSettings.EncryptionKey;
var hashed = _hashAlgo.ComputeHash(Encoding.UTF8.GetBytes(strWithKey));
return hashed.ToHexString();
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢
通过互联网搜索后,我发现使用drupal 7,密码不再通过md5加密.
有什么方法可以在Drupal 7中加密密码?
passwords md5 cryptography drupal cryptographic-hash-function
在Java中,我想根据我的应用程序中的字符串生成公钥和私钥。
我不是为了安全,而是为了“我可以使用这个字符串生成相同的公钥和私钥吗”。
我该怎么做呢?
我正在研究这些方法:
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DSA", "SUN");
SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN");
keyGen.initialize(1024, random);
Run Code Online (Sandbox Code Playgroud)
但我想用我自己的字符串作为密钥对生成器的种子,理想情况下该字符串将通过这些算法进行哈希处理。KeyGen 仅获取SecureRandom对象。每当我传递该字符串时,我都想要相同的结果密钥对。
hashcat64.exe hashcat -m0 -a0 crackme.txt password.txt
Run Code Online (Sandbox Code Playgroud)
设备#1:英特尔的 OpenCL 运行时(仅限 GPU)当前已损坏。我们正在等待来自 Intel 的更新 OpenCL 驱动程序
哈希“hashcat”:令牌长度异常未加载哈希。
我收到这条消息。我附上了我的 CL 的快照。我查找了哈希目录及其格式中的任何空格。我还尝试更改 .txt 文件的所有 Unicode 格式。似乎什么都不起作用。我还更新了英特尔驱动程序。\
cryptography salt password-hash cryptographic-hash-function hashcat
在查看了多个用于生成 Java MD5 和 SHA* 散列的在线参考资料后,我注意到纯文本(文件字符串)在被馈送到 Digest 对象以生成散列之前和之后经过了一定的准备。具体来说,数据首先转换为字节数组,然后馈送到摘要,然后输出哈希转换为十六进制流。为什么所有这些字节和十六进制转换?
PS:我想答案与 Java 和 Digest 对象如何开展业务有关,我提出这个问题的动机是为了理解这种行为,并可能获得对一些文档/文献的引用,这些文档/文献对此进行了深入解释.
丹克!
刚才我在做一个金融项目。在这里,团队正在考虑使用MD5for password hashing。但是,今天很容易复制一个SHA1或MD5密码来解密,包括如果它们是复杂的密码,例如:
My$uper$ecur3PAS$word+448,您可以使用在线页面来解密它,就可以了。中小型开发人员(包括我)使用那些hashing methods,但我认为还不足以提供数据库的安全性。(不包括firewalls,network security,iptables,等等)。
有人可以告诉我解决此漏洞的更好方法是什么吗?
md5 cryptography sha1 password-hash cryptographic-hash-function
我正在学习有关哈希表,哈希地图等我刚刚实施了哈希表在C,与操作:insert(HTable, key),delete(HTable, key),initialize(HTable)和search(HTable, key)。
我想问一件事。由于在(适当的)哈希表中,计算出的哈希索引可能非常大,这是否意味着消耗的空间会像INT_MAX(当然仍然是 O(n))或更多?我的意思是给定我们想要存储在哈希表中的输入元素(即插入它),insert() 函数将调用哈希函数,然后该函数将计算要进入的元素的哈希索引。因此它将使用哈希函数来找到这个索引。
当我们使用哈希函数对元素进行操作时,哈希索引可能会变得非常大。使用适当的,例如加密哈希函数,这个索引可能会变得很大(他们使用 300 位的素数 - Diffie Hellman 公钥密码学等),对吧?我知道在普通的散列函数(例如初学者用来学习的琐碎函数)中,我们应用 mod 操作以使元素适合散列表的边界,但这样做,也许我们限制了散列函数的潜力?
因此,要将元素唯一地映射到哈希表,我们必须使用一个巨大的哈希表。这些加密哈希表是如何实现的?它们必须是完全安全的,对吧?甚至“cryptographichashfunction”上的 Stack Overflow 标签也表示,极不可能找到将映射到同一元素的两个输入(因此冲突的可能性很小)。这不需要将一个巨大的数组存储在内存(或磁盘)中吗?因此,内存消耗将是巨大的。
当然,时间复杂度不是问题。我们只是看到哈希表/数组的起始地址加上索引,然后去内存中的那个地方获取值(O(1) - 哈希表的搜索原理)。
我在某处错了吗?有什么我想念的吗?我希望我说清楚了。总而言之,我想对此进行确认。一个好的散列函数是否需要一个巨大的数组(散列表)以及如此大量的内存才能正确实现?这么多空间是合理的,还是有什么我不太明白的地方?谢谢。
hash cryptography hash-function hashtable cryptographic-hash-function
(我不是母语,在术语方面可能不正确.抱歉.)
我通过无线电在AVR微控制器之间传输数据供个人使用,并希望客户能够证明传输数据的真实性,因为它来自一个授权客户端.这意味着我不要求不可否认性,并且能够预先定义共享密钥.我已经对不同的方法做了一些研究,发现我需要一些帮助来选择一个最符合我要求的方法.
请理解我不需要最高安全性.我只是想阻止潜在的脚本儿童邻居在几个小时内闯入.如果打入平均消费装备需要几个星期的时间,我会没事的.
我传输的消息尺寸相当小(不超过30个字节,只有几个字节的有效负载),频率不超过30条消息/分钟.
一个用例是运动检测器通过空中向处理单元发送消息,然后处理单元通过空中向灯开关发送另一个消息.请不要专注于运输.这个问题仅针对数据真实性.
我在具有非常有限的闪存和RAM的20 MHz AVR微控制器上运行客户端/服务器软件(在C中).所以我正在寻找一种具有小代码大小和RAM利用率的解决方案,同时仍然提供高数据速率.
我使用MD5实现(C)进行了一些性能测试,从20字节数据创建哈希值,发现它可能太慢了.我知道MD5实现本身并不能解决这个问题.我做的测试只是为了评估散列性能.
感谢您的评论
microcontroller cryptography avr authenticity cryptographic-hash-function