Tag: 哈希

正在计算一个比SHA家族函数less的CPU密集度的MD5哈希值?

在“标准”笔记本电脑的x86硬件上计算MD5散列比在SHA-1或SHA-2上占用更less的CPU? 我对一般信息感兴趣,而不是特定于某个芯片。 更新:在我的情况下,我有兴趣计算文件的散列。 如果文件大小很重要,我们假设它是300K。

哈希碰撞 – 有什么机会?

我有一些PHP动力网站上的代码,它创build了一个随机哈希(使用sha1() ),我用它来匹配数据库中的logging。 碰撞的几率是多less? 我应该生成哈希,然后检查它是否在数据库中(我宁愿避免一个额外的查询)或自动插入它,基于它可能不会与另一个相撞的可能性。

在IE中刷新javascript位置

我需要修改散列,在发生特定处理后将其删除,以便在用户刷新时不会导致进程再次运行。 这在FF中正常工作,但似乎每次我尝试更改哈希重新加载IE。 我认为这与网页上加载的其他内容有关,但我不确定。 我有一个加载的iframe(与进程相关)以及一些仍在父窗口中获取的脚本。 我似乎无法find一个好的方法来改变所有加载完成后的散列。 而且,与此同时,我们甚至都不认为这与装载有关。 任何想法如何解决这个问题? 更奇怪的行为:哈希是通过redirect在web应用程序的其他地方。 我发现,如果我只是手动添加散列,将#myid添加到URL,它不会重新加载。 如果我在已经加载的页面上input散列(将#myid添加到已经存在的URL),或者在新标签中input完整的URL,则无关紧要。

为什么crypt / blowfish与两种不同的盐产生相同的散列?

这个问题与PHP的crypt()的实现有关。 对于这个问题,盐的前7个字符不计算在内,所以盐' $2a$07$a '将被认为长度为1,因为盐只有1个字符,元数据有7个字符。 当使用超过22个字符的saltstring时,生成的哈希(即截断)没有变化,并且当使用less于21个字符的string时,salt将自动填充(显然为' $ '字符)。 这是相当简单的。 但是,如果给定一个盐20个字符和一个盐21个字符,除了21长度盐的最后一个字符,两个字符是相同的,那么两个哈希string将是相同的。 一个长22个字符的盐,除了最后一个字符,它和21长度的盐是一样的,哈希将会不同。 代码示例: $foo = 'bar'; $salt_xx = '$2a$07$'; $salt_19 = $salt_xx . 'b1b2ee48991281a439d'; $salt_20 = $salt_19 . 'a'; $salt_21 = $salt_20 . '2'; $salt_22 = $salt_21 . 'b'; var_dump( crypt($foo, $salt_19), crypt($foo, $salt_20), crypt($foo, $salt_21), crypt($foo, $salt_22) ); 会产生: string(60) "$2a$07$b1b2ee48991281a439d$$.dEUdhUoQXVqUieLTCp0cFVolhFcbuNi" string(60) "$2a$07$b1b2ee48991281a439da$.UxGYN739wLkV5PGoR1XA4EvNVPjwylG" string(60) "$2a$07$b1b2ee48991281a439da2.UxGYN739wLkV5PGoR1XA4EvNVPjwylG" string(60) […]

如何从C#中的字节数组生成哈希码?

说我有一个对象,存储一个字节数组,我想能够有效地生成它的哈希码。 在过去,我使用了密码散列函数,因为它们很容易实现,但是它们做的工作要比单独使用密码方法要多得多,而且我不在乎(我只是在使用散列码作为散列表中的关键字)。 这是我今天的事情: struct SomeData : IEquatable<SomeData> { private readonly byte[] data; public SomeData(byte[] data) { if (null == data || data.Length <= 0) { throw new ArgumentException("data"); } this.data = new byte[data.Length]; Array.Copy(data, this.data, data.Length); } public override bool Equals(object obj) { return obj is SomeData && Equals((SomeData)obj); } public bool Equals(SomeData other) { […]

.NET独特的对象标识符

有没有办法获得一个实例的唯一标识符? 对于指向同一个实例的两个引用, GetHashCode()是相同的。 但是,两个不同的实例可以(非常容易地)获得相同的哈希码: Hashtable hashCodesSeen = new Hashtable(); LinkedList<object> l = new LinkedList<object>(); int n = 0; while (true) { object o = new object(); // Remember objects so that they don't get collected. // This does not make any difference though 🙁 l.AddFirst(o); int hashCode = o.GetHashCode(); n++; if (hashCodesSeen.ContainsKey(hashCode)) { // Same […]

为什么盐会使字典攻击“不可能”?

可能重复: 需要一些帮助了解密码盐 更新:请注意,我不是问什么盐,什么彩虹桌,字典攻击是什么,或盐的目的是什么。 我在查询:如果你知道用户salt和hash,计算他们的密码不是很容易吗? 我理解这个过程,并在我的一些项目中自己实现。 s = random salt storedPassword = sha1(password + s) 在你存储的数据库中: username | hashed_password | salt 每一次我见过的盐都会在密码的末尾添加salt,或者开始: hashed_Password = sha1(s + password ) hashed_Password = sha1(password + s) 因此,一个值得他的盐的黑客的字典攻击(哈哈)将简单地运行每个关键字对存储的盐在上面列出的常见组合。 上面描述的实现只是为黑客添加了另一个步骤,而没有真正解决潜在的问题? 有什么替代方法来解决这个问题,或者我误解了这个问题? 我唯一能想到的就是有一个秘密的混合algorithm,它将salt和password绑定在一起,或者将其他用户字段添加到散列过程中,这意味着黑客必须有权访问数据库,他们的字典攻击certificate富有成效。 (更新,正如在评论中指出的那样,最好假定黑客可以访问你的所有信息,所以这可能不是最好的)。 让我举一个例子,说明我build议黑客会用密码和哈希列表破解用户数据库: 我们被黑客窃取的数据 RawPassword (not stored) | Hashed | Salt ——————————————————– letmein WEFLS… WEFOJFOFO… 常用密码字典: Common Password ————– letmein […]

如何散列和比较指向成员函数?

我怎样才能哈希(std :: tr1 ::哈希或boost ::哈希)一个c + +指针成员函数? 例: 我有几个bool(Class :: * functionPointer)()(非静态)指向类的几个不同的方法,我需要哈希那些指向成员函数。 我怎样才能做到这一点? 也如何比较(std :: less)这些成员函数指针,所以我可以将它们存储在一个std :: set?

Ruby on Rails:在表单中提交一个数组

我有一个模型,有一个属性是一个数组。 什么是我从表单提交填充该属性的正确方法? 我知道有一个表单input与名称包括括号的字段从input创build一个哈希。 我应该只是采取这一点,并在控制器中通过它按摩到arrays? 示例使其不那么抽象: class Article serialize :links, Array end linksvariables采用URL数组的forms,即[["http://www.google.com"], ["http://stackoverflow.com"]] 当我在表单中使用类似下面的内容时,会创build一个哈希值: <%= hidden_field_tag "article[links][#{url}]", :track, :value => nil %> 结果哈希看起来像这样: "links" => {"http://www.google.com" => "", "http://stackoverflow.com" => ""} 如果我不在链接的名称中包含url,则其他值会互相打开: <%= hidden_field_tag "article[links]", :track, :value => url %> 结果如下所示: "links" => "http://stackoverflow.com"

如何在Android中散列string?

我正在开发一个Android应用程序,并且在发送到数据库之前有一串我想要encryption的string。 我想要一些安全,易于实现的东西,每次传递相同的数据时都会生成相同的东西,并且最好会得到一个string,不pipe传递给它的string有多大,它都会保持一个恒定的长度。 也许我正在寻找一个哈希。