使用用户密码加密数据库数据的最佳方法是什么?

Dan*_*off 5 ruby database encryption sinatra

假设一个应用程序具有属于用户的特定数据,除了所有者之外,任何人都不应看到它。我使用 MySQL 数据库和 DataMapper ORM 映射器。该应用程序是在 Sinatra 上用 Ruby 编写的。

应用行为:

  1. 用户注册一个帐户。创建用户名和密码。
  2. 登录到他的仪表板。
  3. 必须保护特定表中的某些字段。

基本上,我正在寻找模型属性的自动加密。像这样的东西:

class Transaction
  include DataMapper::Resource

  property :id, Serial
  property :value, String, :length => 1024, :encrypted => true
  ... etc ...
  belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)

我认为动态加密/解密会导致性能问题,但这没关系。至少如果这有效的话——我很好。

有什么想法如何做到这一点?

Pis*_*tol 0

您使用单向哈希算法。对密码进行哈希处理并存储哈希值。然后,每当用户输入密码时,您都会对输入的密码进行哈希处理,并将其与存储的哈希密码进行比较。如果它们相同,您就让它们通过。如果没有,他们就会被拒绝。

  • 这对于“不以明文形式存储用户密码”很有好处,但我认为提问者需要在某个时候解密用户的数据(例如医疗记录) (2认同)