A. ActiveSupport::MessageEncryptor
を利用する
暗号化・復号化例
# # ActiveSupport::MessageEncryptor#new で扱える key の長さが # 決まっているのでその定義を呼び出して使う # # salt の生成 # # NOTE: このままだと実行時に再生成されて復号化できなくなる # .env や `rails credentials:edit` に値を保管したい key_length = ActiveSupport::MessageEncryptor.key_len salt = SecureRandom.random_bytes(key_length) key = ActiveSupport::KeyGenerator.new('additional my secure secret') .generate_key(salt, key_length) # # 暗号化・復号化のための MessageEncryptor インスタンスを生成 # # 暗号化・復号化の実施 # # HINT: `cipher:` で投げる有効な値は OpenSSL::Cipher.ciphers で確認できる # デフォルトでは aes-256-gcm が利用される crypt = ActiveSupport::MessageEncryptor.new(key, cipher: "aes-256-gcm") pp encrypted_data = crypt.encrypt_and_sign('my secret data') # => "4/fBPw+VUGTXlwsstHfQycJ4hQHUySes--1vnaE91fQM6GZ655--Nyq/mh6ytaxfvMOLYdcySw==" pp crypt.decrypt_and_verify(encrypted_data) # => "my secret data"