标签: attr-encrypted

唯一的IV使用attr_encrypted生成相同的密文

使用最基本的设置:

class User < ActiveRecord::Base
  attr_encrypted :name, 
                 key: 'This is a key that is 256 bits!!', 
                 encode: true, 
                 encode_iv: true, 
                 encode_salt: true
end
Run Code Online (Sandbox Code Playgroud)

提供相同名称时,结果在数据库中显示如下:

?????????????????????????????????????????????????????????
? id ? encrypted_name               ? encrypted_name_iv ?
?????????????????????????????????????????????????????????
? 1  ? aVXZb1b317nroumXVBdV9pGxA2o= ? JyE7wHups+3upY5e  ?
? 2  ? aVXZb1b317nroumXVBdV9pGxA2o= ? uz/ktrtbUAksg5Vp  ?
?????????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)

为什么密文相同?这不是iv的一部分,宝石默认使用它吗?

encryption ruby-on-rails attr-encrypted

15
推荐指数
1
解决办法
722
查看次数

在 Rails 7 中使用 attr_encrypted

我们已将应用程序升级到 Rails 7,现在我们遇到了 attr_encrypted gem 的问题。当我们尝试启动 Rails 服务器/控制台时,我们收到以下错误:

gems/ruby-3.0.2/gems/attr_encrypted-3.1.0/lib/attr_encrypted.rb:176:in `block in attr_encrypted': undefined method `[]=' for nil:NilClass (NoMethodError)
Run Code Online (Sandbox Code Playgroud)

如果我们恢复到 Rails 6,错误就会消失,有人遇到过同样的问题吗?

ruby ruby-on-rails attr-encrypted ruby-on-rails-7

7
推荐指数
1
解决办法
1871
查看次数

如何对数据库中的加密元素进行通配符搜索

我使用attr_encrypted加密我的一些模型字段,并使用Tire和Elasticsearch进行全文搜索.我只使用一个简单的搜索表单.这是我的模型的一部分:

class Student < ActiveRecord::Base

  include Tire::Model::Search
  include Tire::Model::Callbacks

  attr_accessible :name, :surname
  attr_encrypted :name,             :key => 'f98gd9regre9gr9gre9gerh'
  attr_encrypted :surname,          :key => 'f98gd9regre9gr9gre9gerh'

  def self.search(params)
    tire.search(load: true) do
      query { string Student.encrypt_name(params[:search]) } if params[:search].present?
    end  
  end
end
Run Code Online (Sandbox Code Playgroud)

因此,例如,如果我在数据库中有名称"John",当我搜索"John"时,查询被加密(Student.encrypt_name(params [:search])),然后查询数据库,结果返回.Elasticsearch允许通配符搜索,例如,如果我搜索"Joh*",则应返回匹配结果,但加密关键字"Joh"与加密"John"不同,db不返回任何结果.任何解决方案都将受到赞赏.

此致,拉多斯拉夫

ruby-on-rails elasticsearch ruby-on-rails-3.2 attr-encrypted

5
推荐指数
1
解决办法
1030
查看次数

你如何使用attr_encrypted的灯具

我想测试一个使用attr_encrypted加密数据库中的秘密的模型

class Thing
  attr_encrypted :secret, encode: true
end
Run Code Online (Sandbox Code Playgroud)

但是当我在灯具中定义秘密时,编码的换行符会被转义出来.

one:
  encrypted_secret: '<%= Thing.encrypt_secret(SecureRandom.uuid) %>'
Run Code Online (Sandbox Code Playgroud)

那是:

'axZFZEknxUSYdUlPhwLBbj8CwSeCW5at2INA98EcCcY7MVFdmXvk7Sb4DZhC\nm6qD\n'
Run Code Online (Sandbox Code Playgroud)

存储在数据库中:

'axZFZEknxUSYdUlPhwLBbj8CwSeCW5at2INA98EcCcY7MVFdmXvk7Sb4DZhC
 m6qD'
Run Code Online (Sandbox Code Playgroud)

这样做的问题是失败了:

thing = things(:one)
assert_equal thing, Thing.find_by_secret(thing.secret)
Run Code Online (Sandbox Code Playgroud)

Thing.find_by_secret(thing.secret)返回nil,因为生成的SQL查询尝试匹配加密机密的两个版本并且无法获得匹配.

我试过了:

one:
  encrypted_secret: 'axZFZEknxUSYdUlPhwLBbj8CwSeCW5at2INA98EcCcY7MVFdmXvk7Sb4DZhC\nm6qD\n'
Run Code Online (Sandbox Code Playgroud)

但得到相同的结果.

如何配置我的灯具以使用attr_encrypted?

activerecord ruby-on-rails fixtures minitest attr-encrypted

5
推荐指数
1
解决办法
597
查看次数

在attr_encrypted列的rails中查询

我在rails应用程序上有一个ruby,我正在使用attr_encryptedgem来加密一些用户信息.它有盐和IV,所以它是双向加密的.宝石拦截动态find_by以协助查询,但这对我的情况来说不是一个充分的查询,因为我关心结果的数量.

有没有办法查询表以返回与给定匹配的所有结果secret

这是一个例子.我有一个users表,它有一个加密secret属性.因此encrypted_secret,这个表有encrypted_secret_iv,和encrypted_secret_salt.如果用户给出了"abd123"的秘密,我如何查询该表以查看有多少其他人也使用"abc123"作为他们的秘密?

ruby sql encryption ruby-on-rails attr-encrypted

5
推荐指数
1
解决办法
478
查看次数

Algolia搜索加密数据

目前,我的数据库已加密数据,我发送给Algolia.我需要搜索这个加密数据但是如果索引是'John'并且我搜索'Joh',它们根本不相似,因此导致0次点击.

任何想法如何解决这个问题?我目前正在运行rails和attr_encrypted

ruby-on-rails attr-encrypted algolia

0
推荐指数
1
解决办法
105
查看次数