Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在轨道中产生具有常数的盐_Ruby On Rails_Ruby_Encryption_Salt_Bcrypt - Fatal编程技术网

Ruby on rails 在轨道中产生具有常数的盐

Ruby on rails 在轨道中产生具有常数的盐,ruby-on-rails,ruby,encryption,salt,bcrypt,Ruby On Rails,Ruby,Encryption,Salt,Bcrypt,所以我对加密和stackoverflow比较陌生,所以请告诉我我是不是搞错了 默认情况下,Bcrypt使用摘要中随机生成的盐来阻止彩虹表攻击。这些盐存储在数据库的密码摘要中。 如果只在代码中存储一个常数,并将其添加到随机生成的代码中,不是更安全吗。理论上,这将要求攻击者同时拥有数据库和代码来测试密码。如果我的想法没有任何缺陷,我会假设它将被内置到bcrypt中,那么我的想法中的错误在哪里呢?因此,基本规则:没有加密是不可破解的,这只是时间问题。“安全”加密只是意味着要花很长时间才能破解它 在彩虹

所以我对加密和stackoverflow比较陌生,所以请告诉我我是不是搞错了

默认情况下,Bcrypt使用摘要中随机生成的盐来阻止彩虹表攻击。这些盐存储在数据库的密码摘要中。
如果只在代码中存储一个常数,并将其添加到随机生成的代码中,不是更安全吗。理论上,这将要求攻击者同时拥有数据库和代码来测试密码。如果我的想法没有任何缺陷,我会假设它将被内置到bcrypt中,那么我的想法中的错误在哪里呢?

因此,基本规则:没有加密是不可破解的,这只是时间问题。“安全”加密只是意味着要花很长时间才能破解它

在彩虹表与预先打破密码。现在根本不需要时间,加密也没用

加入盐。用盐,你不能提前做任何工作,而用个别盐,你也不能重复使用工作

这是一本好书

在这一点上,从数据库中读取密码并非不可能,但要完全猜出密码是很困难的,从这一点上改进加密对你没有任何帮助,除非你开始让用户的密码更难猜


另外,如果他们可以直接访问您的数据库(您只在部署计算机上存储数据库的凭据),那么他们很可能可以访问该计算机上的其他内容,并且有许多比对您的数据库进行暴力测试更容易获得用户密码的方法。(例如,重新编写代码,以便在输入密码时只向他们发送密码)

盐是随机的,每个密码都不同,因此在代码中存储一个字符串的安全性较低,因为当您同时获得代码和数据库时,破解密码会更容易。当你把所有的事情都做好的时候,好的盐和好的单向函数应该可以抵抗暴力攻击(只要密码是“强的”)。你的建议是,不鼓励也不推荐。

只是学究气,但你说的不是加密,而是散列。