我已经读过,在对密码进行散列时,许多程序员建议使用BCrypt算法.
我正在使用C#进行编程,并且想知道是否有人知道BCrypt的良好实现?我找到了这个页面,但我真的不知道它是不是假的.
选择密码哈希方案时应该注意什么?BCrypt是一个"好"的实现吗?
要检查是什么@some_var,我正在做
if @some_var.class.to_s == 'Hash'
Run Code Online (Sandbox Code Playgroud)
我确信有更优雅的方式来检查是否@some_var是一个Hash或一个Array.
什么是好的哈希函数?我在大学的数据结构课程中看到了很多哈希函数和应用程序,但我大多认为很难创建一个好的哈希函数.作为避免碰撞的经验法则,我的教授说:
function Hash(key)
return key mod PrimeNumber
end
Run Code Online (Sandbox Code Playgroud)
(mod是C和类似语言中的%运算符)
使用素数作为哈希表的大小.我觉得这是一个很好的功能,以避免碰撞和快速,但我怎么能做一个更好的?字符串键对数字键有更好的散列函数吗?
何时使用CRC进行错误检测而不是更现代的散列函数(如MD5或SHA1)?前者在嵌入式硬件上更容易实现吗?
有没有更好的方法在Mercurial中提取当前版本哈希值
hg log -l1|grep changeset|cut -d: -f3
?
我的部分webapp部署脚本使用其唯一的修订哈希"标记"上传的应用程序tarball.
当我想建立一个登录系统时,我总是将给定密码的MD5与服务器端用户表中的值进行比较.
然而,我的一个朋友告诉我,一个"清晰"的密码可能会被网络软件嗅到.
所以我的问题是:在客户端散列密码是个好主意吗?它比在服务器端散列更好吗?
存储在树对象git ls-tree中的SHA1哈希值(由返回的sha1sum)与文件内容的SHA1哈希值不匹配(由返回)
$ git cat-file blob 4716ca912495c805b94a88ef6dc3fb4aff46bf3c | sha1sum
de20247992af0f949ae8df4fa9a37e4a03d7063e -
Run Code Online (Sandbox Code Playgroud)
git如何计算文件哈希值?它是否在计算哈希值之前压缩内容?
我想value用哈希替换每个哈希value.some_method.
例如,对于给定的简单哈希:
{"a" => "b", "c" => "d"}`
Run Code Online (Sandbox Code Playgroud)
每个值都应该是.upcased,所以它看起来像:
{"a" => "B", "c" => "D"}
Run Code Online (Sandbox Code Playgroud)
我试过#collect,#map但总是把数组拿回来.有一种优雅的方式来做到这一点?
UPDATE
该死的,我忘记了:哈希是一个不应该改变的实例变量.我需要一个带有更改值的新哈希,但是不希望显式定义该变量,然后遍历填充它的哈希.就像是:
new_hash = hash.magic{ ... }
Run Code Online (Sandbox Code Playgroud) :key => "value"(hashrocket)和key: "value"(Ruby 1.9)符号之间有什么区别吗?
如果没有,那么我想使用key: "value"符号.有没有宝石可以帮助我转换:x =>为x:符号?
如果缺少键,则Index into Dictionary会引发异常.是否有IDictionary的实现,而是返回默认值(T)?
我知道"TryGetValue"方法,但这不可能与linq一起使用.
这会有效地做我需要的吗?:
myDict.FirstOrDefault(a => a.Key == someKeyKalue);
Run Code Online (Sandbox Code Playgroud)
我认为它不会,因为我认为它将迭代键而不是使用哈希查找.