Verschlüsselungs- und Entschlüsselungsalgorithmus in Rails

8

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?

    
Mellon 13.12.2011, 12:46
quelle

5 Antworten

7

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:

  1. berechnen Sie einen symmetrischen AES-Verschlüsselungsschlüssel, 256 Bit
  2. Berechne optional einen Initialisierungsvektor zur Verwendung mit aes-256-cbc (das aes gem kann das tatsächlich für dich tun, du könntest diesen Schritt überspringen)
  3. Verschlüsseln Sie Ihre Nachricht, indem Sie optional die Ausgabe :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.

%Vor%

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.

    
buruzaemon 22.12.2011 03:18
quelle
3

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%     
Jai Kumar Rajput 07.11.2015 09:04
quelle
2

Sie können die OpenSSL-Bibliothek verwenden. Erstellen Sie die folgenden Funktionen und dann können Sie die Verschlüsselungs- und Entschlüsselungsmethoden verwenden.

%Vor%     
Shanison 13.12.2011 12:55
quelle
2

Ссылка

Ссылка

attr_encrypted funktioniert gut für mich - obwohl ich auch Ezcrypto verwendet habe. Es fungiert als Wrapper um die OpenSSL-Bibliothek.

    
Pasted 13.12.2011 13:26
quelle
2

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.

    
Adones Pitogo 18.11.2016 03:50
quelle