So führen Sie Backend-Aufgaben in Rails aus: Sidekiq, Resque, Delayed Job, Action Job sind berühmt.
Die meiste Zeit erstelle ich Rails-Anwendungen auf AWS, sodass Backend-Aufgaben häufig von Lambdas ausgeführt werden.
Dieses Mal werde ich darüber schreiben, wie man die verschlüsselte Zeichenfolge auf der Rails-Seite mit Lambda (Python) erhält und entschlüsselt.
Es ist so.

Die Umgebung ist Schienen 5.0.
Rails ActiveSupport verfügt jetzt über einen praktischen MessageEncryptor zum Verschlüsseln von Zeichenfolgen Es gibt. ** Dies kann diesmal nicht verwendet werden. ** (Ich werde es später erklären)
Dieses Mal werde ich es selbst verschlüsseln und kombinieren.
Encryptable.rb
module Encryptable
  SECRET = 'hogehogehogehogehogehogehogehoge'
  IV = 'hogehogehogehoge'
  CIP_NAME = 'aes-256-cbc'
  def encrypt(value)
    b64data = Base64::strict_encode64(value)
    cip = OpenSSL::Cipher.new(CIP_NAME)
    cip.encrypt
    cip.key = SECRET
    cip.iv = IV
    encrypted = cip.update(b64data)
    encrypted << cip.final
    "#{Base64::strict_encode64(encrypted)}"
  end
  def decrypt(value)
    data = Base64::strict_decode64(value)
    cip = OpenSSL::Cipher.new(CIP_NAME)
    cip.decrypt
    cip.key = SECRET
    cip.iv = IV
    decrypted = cip.update(data)
    decrypted << cip.final
    "#{Base64::strict_decode64(decrypted)}".encode('UTF-8','UTF-8')
  end
Decryptable.py
import base64
from Crypto.Cipher import AES
SECRET = 'hogehogehogehogehogehogehogehoge'
IV = 'hogehogehogehoge'
def decrypt(encrypted_value):
  data = base64.b64decode(encrypted_value)
  cip = AES.new(SECRET, AES.MODE_CBC, IV)
  b64_decrypted_data = cip.decrypt(data)
  decrypted_data = base64.b64decode(b64_decrypted_data)
  return decrypted_data
Wie Sie der Quelle von MessageEncryptor entnehmen können, Marshal wird für die Serialisierung verwendet. Aus diesem Grund werden der mit MessageEncryptor verschlüsselten Zeichenfolge nach der für Ruby typischen Marshalling-Methode Typinformationen usw. hinzugefügt. Es kann auf der Python-Seite nicht entschlüsselt werden.
Recommended Posts