0

文档attr_encrypted说我必须将结果存储在key = SecureRandom.random_bytes(32)模型上。我认为将此密钥存储为 ENV 变量会更安全。我也习惯于rake secret为我的 ENV 变量运行。rake secret依靠SecureRandom.hex().

我想知道两件事:

  1. 我是否正确假设应该将加密密钥存储为 ENV 变量?
  2. 两种 SecureRandom 方法之间的密钥加密强度有什么区别吗?hex()random_bytes()
4

1 回答 1

1

SecureRandom#hex这里定义为:

def hex(n=nil)
  random_bytes(n).unpack("H*")[0]
end

所以它们生成的数据是完全一样的,只是格式不同而已。

至于加密密钥,这取决于您和您托管应用程序的方式。如果它在您控制的服务器上,则未提交的配置文件很好(尽管显然环境变量方法仍然有效)。如果你在 Heroku 上托管,那么环境变量就是要走的路。

于 2019-09-24T02:26:02.780 回答