Ich möchte eine Verschlüsselung einen Attributstring-Wert eines Modells entschlüsseln, indem Sie AES -Algorithmus.
Ich frage mich in Rails , wie ist es am einfachsten? Gibt es eine AES gem
-Bibliothek, die direkt verwendet werden kann? Und wie man es benutzt?
Grundsätzlich brauche ich eine Anleitung, wie man AES Verschlüsselung / Entschlüsselung in der Rails App anwendet .
------- Aktualisierung -------
Ich bemerke gerade, dass es AES-Juwel gibt. Wenn ich dieses Juwel in meine GemFile einfüge, wie kann ich es in meiner Anwendung für die Verschlüsselung & amp; Entschlüsselung?
AFAIK, das aes
Gem schließt die openssl
Ruby Standardbibliothek ein, um eine viel einfachere Schnittstelle zu bieten. Es unterstützt nur aes-256-cbc
, was 256-Bit-AES mit Chiffre-Block-Verkettung ist. Wahrscheinlich fügen Sie Ihren Modellen in Rails Verschlüsselungs- / Entschlüsselungsmethoden hinzu.
Die grundlegende Reihenfolge der Operation für die Verschlüsselung wäre:
aes-256-cbc
(das aes
gem kann das tatsächlich für dich tun, du könntest diesen Schritt überspringen) :format
angeben (standardmäßig Base64, ansonsten einfache Ruby-Byte-Strings) und / oder Initialisierungsvektor :iv
Das wäre:
%Vor% Sie würden dann enc64
entschlüsseln, indem Sie die gesamte :iv
+ $
+ verschlüsselte Nachrichtenfolge sowie die AES 256-bit key
übergeben.
Nachdem ich einige Erfahrung mit der openssl
Standardbibliothek in Ruby gemacht habe, kann ich Ihnen sagen, dass die Dokumentation in Englisch spärlich ist, während die japanische Dokumentation sehr gut ist. Auf jeden Fall ist die Verwendung der openssl
API bestenfalls verwirrend. Wenn es Ihnen also nichts ausmacht, sich auf aes-256-cbc
zu beschränken, dann ist dieses aes
Juwel sehr hilfreich.
Wohlgemerkt, der Autor hat eine Einschränkung hinsichtlich der Geschwindigkeit. Wenn Sie eine schnellere Lösung benötigen, sollten Sie sich FastAES
ansehen. FastAES
ist jedoch eine C-Erweiterung und erfordert einen Compiler für Ihre Zielplattform.
Ich schlage vor, ein Modul in Ihrer App zu erstellen und es dort einzubinden, wo Sie es verwenden möchten, und verwenden Sie die Modulmethode als:
Modul
%Vor% im Anwendungscontroller include MyModule
Jetzt von jedem Controller:
%Vor%Ich stolperte das gleiche Problem und erstellte dafür ein einfaches Modellproblem (Rails 5):
%Vor%Fügen Sie es in Ihr Modell ein, wenn Sie verschlüsselbare Attribute haben möchten
%Vor% Nun werden Ihre Modellattribute in before_save
verschlüsselt und am after_save
und am after_find
hooks entschlüsselt.
Tags und Links ruby-on-rails-3 ruby-on-rails ruby-on-rails-3.1