前提・実現したいこと
各ユーザーごとに1つの暗号キーを作成し、Railsアプリケーションの中に保存したいと考えています。
その暗号キーを用いて、レコード追加時の暗号化や、復号をおこなう形です。
質問
コントローラーで暗号キーを作成して、ターミナルに出力されたkeyをモデルにコピペして、暗号化、復号のテストを行おうとしたのですが、createアクションでkey must be 32 bytes
が表示されてしまいます。
コントローラー側で確認したところ作成したkeyは32byteとなっていました。
またSECUREをSECURE = 'HOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGE'
に変更するとエラーが出ず、問題なく動作しました。
どこに問題があるか教えていただけないでしょうか?
Ruby
1 # controller 2 salt = SecureRandom.random_bytes(64) 3 key_length = ActiveSupport::MessageEncryptor.key_len('aes-256-cbc') 4 key = ActiveSupport::KeyGenerator.new('password').generate_key(salt, key_length) 5 logger.debug("key":key) 6 logger.debug(key.bytesize) #32byteと表示された。
Ruby
1 # model 2 def encrypt_password 3 self.name = encrypt(self.name) 4 end 5 6 # SECURE Controllerでできた文字列をコピペした 7 SECURE = '\xA9\xB3\xB3\x9A\x80\xE5\xD6\xE4$d\xA8}\xFB\xC3B\xA0\x8A%w\x8FS\x83\xC2\xC8)a\x7F\xAF\f\xDD\x1C\x81' 8 CIPHER = 'aes-256-cbc' 9 10 # 暗号化 11 def encrypt(password) 12 crypt = ActiveSupport::MessageEncryptor.new(SECURE, CIPHER) 13 crypt.encrypt_and_sign(password) # ここでエラー 14 end 15 16
発生している問題・エラーメッセージ
Ruby
1 key must be 32 bytes
補足情報(FW/ツールのバージョンなど)
暗号化のgemは利用しない前提で考えています。
ruby 2.6.2
rails 5.2.2
回答1件
あなたの回答
tips
プレビュー