環境変数からsaltを取得したい
- ここを見ながら
MessageEncryptor
を使って文字列を暗号化しようとしています。
ruby
1len = ActiveSupport::MessageEncryptor.key_len 2salt = SecureRandom.random_bytes(len) 3key = ActiveSupport::KeyGenerator.new('password').generate_key(salt, len) # => "\x89\xE0\x156\xAC..." 4crypt = ActiveSupport::MessageEncryptor.new(key) # => #<ActiveSupport::MessageEncryptor ...> 5encrypted_data = crypt.encrypt_and_sign('my secret data') # => "NlFBTTMwOUV5UlA1QlNEN2xkY2d6eThYWWh..." 6crypt.decrypt_and_verify(encrypted_data)
- 上記の通りにすると、問題なく暗号化、複合化できるのですが、
salt
を環境変数(またはcredentials.yml)に保存し、取得すると f\xAA\x7F\xFE<\x
...のように、バックスラッシュがエスケープされてしまい、結果的に長さが変わってしまいます。- それを
gsub
などで\x
にしようとするとInvalid hex escape
でできません。
お聞きしたい事
- 上記のコードの2行目で
random_bytes
しているのが原因だと思うのですが - エスケープされるような値を環境変数などに入れる事は普通しないのでしょうか?
- する場合は、どのようにするのでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/17 01:33