问题标签 [attr-encrypted]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
182 浏览

ruby-on-rails - gem attr_encrypted 不适用于 rails 2.3.8 + bundler?

所以,当我将这个 gem与 config.gem 方法一起使用时,它会跟踪 2 的 environment.rb 文件,一切都很好。我可以保存和读取加密属性。

但是当我使用 bundler(首选方法 =D)时,attr_encrypted 突然无法读取或写入任何加密属性到数据库。控制台/日志/网页中的任何地方都没有错误。

有任何想法吗?

0 投票
1 回答
465 浏览

ruby-on-rails - 在 attr_encrypted 使用所述虚拟属性作为加密密钥之前未设置虚拟属性

何时encryption_key由 调用attr_encrypted:passphrase尚未设置。加密密钥最终是盐的 sha1 散列;它应该是密码和盐的 sha1 哈希。

salt 在创建时生成并保存在数据库中。

如何:passphrase在加密密钥中使用虚拟属性?

有什么建议么?

为简洁起见,我省略了一堆代码。

提前致谢!

0 投票
1 回答
455 浏览

ruby-on-rails-3 - 使用 attr_encrypted (attr_encryptor) gem 时出现 MassAssignmentSecurity 错误

对于我的 rails 3.2.3 应用程序,我使用的是 attr_encryptor,它是 attr_encrypted 的 danpal 的一个分支。我已按照此处给出的说明进行操作,但在尝试创建新Patient记录时收到以下错误消息:

正如说明所说,我在表中添加了encrypted_#{field}encrypted_#{field}_saltencrypted_#{field}_iv列,Patients同时删除了未加密的对应项。

Patient模型看起来像:

我在控制器中的create方法如下所示:Patient

我究竟做错了什么?在此先感谢您的帮助!

0 投票
1 回答
1546 浏览

ruby-on-rails - attr_encryptor 错误解密错误

我使用 danpal/attr_encryptor gem 来加密我的 ActiveRecord 模型中的某些属性。

并得到以下错误

然后我尝试在 rails 控制台中使用 encrypt_number 并在重新启动控制台时看到相同的“数字”字段值的不同值。为什么?

0 投票
1 回答
326 浏览

ruby-on-rails - Rails 加密:danpal/attr_encryptor 密钥生成

使用 attr_encrypted 的 danpal 分支。

' 字符串是否'key生成带有新会话的新对象?由于我遇到了一个问题,我创建了一个具有加密值的实例并且它工作正常。但是,当我运行一个新的 rails 控制台会话或例如尝试通过视图访问该值时,我得到一个bad decrypt错误。我猜这与使用不正确的密钥有关?如在新会话中会传递不同的字符串对象作为键吗?

有没有办法避免这种情况?

0 投票
2 回答
1128 浏览

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

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

因此,例如,如果我在数据库中有名称“John”,当我搜索“John”时,查询会在查询数据库之前被加密 (Student.encrypt_name(params[:search])),并返回结果. Elasticsearch 允许通配符搜索,例如如果我搜索“Joh*”,应该返回匹配的结果,但是加密的关键字“Joh”与加密的“John”不同,db 不返回任何结果。对此的任何解决方案将不胜感激。

问候, 拉多斯拉夫

0 投票
2 回答
1842 浏览

java - 试图从 Java 中解密 attr_encrypted 存储值

我有一个 Rails 应用程序,它在其中一个模型中加密(使用 attr_encrypted)2 个字段。

我的流程的另一部分,不是网络应用程序,需要使用这些数据(明文)执行一些任务。

我正在尝试从数据库中读取存储的值并对其进行解密,但不能..

我的模型如下所示:

DB 字段(encrypted_data1 和 encrypted_data2)充满了数据,但是当我尝试解码 base64(attr_encrypted 默认情况下会这样做)和解密(我尝试从命令行使用 openssl 并使用 Java)时,我得到“坏幻数”(openssl)或关于密钥长度的各种错误(在 Java 中)。我花了很多时间试图解密这些字符串,但就是找不到方法。

这是我拥有的所有数据:
加密 + base64 字符串(用于 data1 和 data2)是:

我可以从它们中解码 base64 并获得一些字节数组。当我尝试:

我得到:“坏幻数”

当我尝试以下 Java 代码时:

我得到“java.security.InvalidKeyException: Invalid AES key length: 14 bytes”
我已经为 Java 代码尝试了许多变体,所以这个特定的可能是一个完全错误..

当我尝试使用红宝石时:

我得到了正确的解密值(如您所见)。

我还注意到,当我尝试在 Java 中加密相同的字符串并在 Base64 中编码时,我得到一个更长的字符串(在 base64 之后)。不知道为什么,但它可能相关..

我想我也应该有一个带有加密值的 salt/iv,但我没有看到它存储在任何地方。我尝试加密相同的值两次并得到相同的输出字符串,所以它不是随机的。

有谁知道 attr_encrypted (它使用 ruby​​ 的加密器)如何加密数据以及我应该如何在外部解密它?

0 投票
2 回答
936 浏览

devise - 加密设计令牌

我正在使用带有令牌身份验证的设计,现在,我想加密数据库中的令牌。谁能给我一个提示,在哪里设计从数据库存储/检索令牌?

我还使用了attr_encrypted gem,一旦找到正确的位置,整个加密应该相当容易。

编辑:

我已经像这里描述的那样实现了令牌身份验证:http: //zyphdesignco.com/blog/simple-auth-token-example-with-devise

我在用户模型中添加了以下行,它应该加密 authentication_token

当我运行它并尝试登录时,我收到以下错误消息:

似乎与 devise 和 attr_encrypted 存在冲突,并且两者都在为重新定义 authentication_token 方法而战(感谢@sbfaulkner 的提示)

也许有人有类似的问题并且知道解决方案?

0 投票
1 回答
997 浏览

ruby-on-rails - RoR:attr_encrypted 未在数据库中保存数据

attr_encrypted在 rails 3.2.13 中使用来加密一列。为此,在我的模型中,我有以下内容:

attr_encrypted :social_security_no, :key => 'a secret key'

该应用程序既不保存social_security_no也不保存encrypted_social_security_no在数据库中。

我也试过spectator-attr_encrypted宝石。但是,现在它给出了以下错误:

/home/ashish/.rvm/gems/ruby-2.0.0-p0@lendty/gems/activerecord-3.2.13/lib/active_record/dynamic_matchers.rb:55:in 'method_missing': undefined method 'attr_encrypted' for #<Class:0x0000000824f768> (NoMethodError)

那么,有什么办法可以摆脱这个问题呢?或者,是否有适用于 Rails 3.2.13 和 Ruby 2.0.0 的 gem 的分叉版本?

而且,这是我的模型:

0 投票
2 回答
877 浏览

ruby-on-rails - 在 Rails 4 下的表单显示上编辑 SSN?

我有一个 Rails 4 应用程序,我正在使用attr_encryptedgem 将 SSN 以加密形式存储在数据库中。

我想要做的是在编辑/显示表格时只显示最后 4 位数字。因此,基本上一旦保存了 SSN,用户就无法在表单中看到完整的 SSN。所以我尝试了以下操作,

我所看到的显示表格上使用<%= @payment_data.ssn %>,它工作正常。但是在我正在使用的编辑表单上<%= f.input :ssn %>,编辑字段已预先填充了完整的 SSN。

注意:我在simple_form表单中使用 gem,但如果我使用基本<%= f.text_field :ssn %>语法,我会看到相同的完整 SSN。

我在这里做错了什么?