gpt4 book ai didi

ruby-on-rails - Rails 中的加密和解密算法

转载 作者:行者123 更新时间:2023-12-04 03:09:17 25 4
gpt4 key购买 nike

我要加密 解密 的一个属性字符串值型号 通过使用 AES算法。

我想知道在 rails ,拥有它的最简单方法是什么?有没有 AES gem哪个库可以直接使用?以及如何使用它?

基本上我需要一些关于如何申请的指南 AES Rails 应用程序中的加密/解密。

------- 更新 -------

我只是注意到有 AES gem .如果我将这个 gem 添加到我的 GemFile 中,我如何在我的应用程序中使用它进行加密和解密?

最佳答案

AFAIK,aes gem 包裹openssl Ruby 标准库提供更简化的界面。仅支持 aes-256-cbc ,这是具有密码块链接的 256 位 AES。您可能会在 Rails 中为模型添加加密/解密方法。

加密的基本操作顺序是:

  • 计算 AES 对称加密 key ,256 位
  • 可选地计算用于 aes-256-cbc 的初始化向量(aes gem 实际上可以为你做这件事,所以你可以跳过这一步)
  • 加密您的消息,可选择指示输出 :format (默认为 Base64,否则为纯 Ruby 字节串)和/或初始化向量 :iv

  • 那将是:
    key = AES.key
    => "6476b3f5ec6dcaddb637e9c9654aa687" # key ends up as a 32-char long hex string

    iv = AES.iv(:base_64)
    => "PPDRCMsZhumCdEO1Zm05uw=="

    enc64 = AES.encrypt("hello, secret world", key, {:iv => iv})
    => "PPDRCMsZhumCdEO1Zm05uw==$b3CCy/1dAMJ2JG5T50igEMGtvo9Ppkla1c9vrKbo+zQ="
    # note that the encrypted result is the :iv
    # and Base64-transformed encrypted message
    # concatenated with $

    然后您将解密 enc64通过传递整个 :iv + $ + 加密消息字符串,以及 AES 256 位 key .
    AES.decrypt(enc64, key)
    => "hello, secret world"

    有使用 openssl 的经验Ruby 的标准库,我可以告诉你,英文文档很少,而日文文档非常好。无论如何,使用 openssl API 充其量是令人困惑的,所以如果您不介意将自己限制在 aes-256-cbc ,那么这个 aes gem 看起来很有帮助。

    请注意,作者确实有关于速度的警告。如果您发现需要更快的解决方案,您应该查看 FastAES . FastAES但是,它是一个 C 扩展,并且需要一个适用于您的目标平台的编译器。

    关于ruby-on-rails - Rails 中的加密和解密算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8489486/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com