You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用crypt_keeper在Rails控制台解密加密的ssn_or_ein字段

解密crypt_keeper加密字段的实操方法(适配2.2.x版本)

前提确认

首先确认Candidate模型已经完成crypt_keeper配置,正常配置格式类似如下(密钥和盐一般存储在环境变量或项目加密配置文件中):

class Candidate < ApplicationRecord
  # 确认ssn_or_ein已经被声明为加密字段
  crypt_keeper :ssn_or_ein, key: ENV['CRYPT_KEEPER_KEY'], salt: ENV['CRYPT_KEEPER_SALT'], provider: :aes
end

方法1:自动解密(推荐)

crypt_keeper默认会自动处理加密字段的读写,你直接调用实例对象的对应属性即可拿到明文,不需要额外处理。
你可以直接在rails c中执行如下代码输出解密后的内容:

c_unknown = Candidate.where("ssn_or_ein like ?", "%______________________==_______________________==%")
c_unknown.each do |candidate|
  puts "候选人ID:#{candidate.id},SSN/EIN明文:#{candidate.ssn_or_ein}"
end

方法2:手动解密

如果需要单独解密某个加密字符串,可以直接调用crypt_keeper的AES provider手动处理:

  1. 先获取项目配置的加密密钥、加密盐(和模型配置的必须完全一致,否则解密失败)
  2. 在rails c中执行如下代码:
# 初始化解密工具
decryptor = CryptKeeper::Provider::Aes.new(
  key: "替换为你项目的CRYPT_KEEPER_KEY值",
  salt: "替换为你项目的CRYPT_KEEPER_SALT值"
)
# 传入加密字符串解密
encrypted_text = "ryVhq2CJJabH2UN561Fmjg==$i2tsOrQXJvFXH7NfnSBs8w=="
plain_text = decryptor.decrypt(encrypted_text)

常见问题排查

  • 调用属性返回的还是加密内容:检查Candidate模型的crypt_keeper配置是否漏加ssn_or_ein字段
  • 手动解密返回乱码:确认使用的密钥、盐和项目配置完全一致,注意空格、换行符等隐形字符的影响
  • 无法找到加密密钥:检查项目的config/secrets.yml、.env文件或部署环境的环境变量配置

内容的提问来源于stack exchange,提问作者shashank barman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 06:15:00