레일즈 암호화 (Rails Encrypt, Decrypt)

레일즈에서는 암호화를 위해 ActiveRecord에서 기본으로 제공하는 라이브러리를 사용할 수 있다..

암호화

secret = Rails.configuration.secret_key_base
encryptor = ActiveSupport::MessageEncryptor.new(secret)
encrypted = encryptor.encrypt_and_sign('value') # => bXRidS92aVpUUG1YVEMwd3V4VkUrUT09LS1hbkUzQzUyTjNlSzBiL2xlaTI1WDNnPT0=--61257eaa178fe8c363e83c8cb966a39c4820fa47

복호화

secret = Rails.configuration.secret_key_base
encryptor = ActiveSupport::MessageEncryptor.new(secret)
encryptor.decrypt_and_verify(encrypted) # => 'value'

MessageEncryptor

위의 예제에서 사용된 MessageEncryptorActiveRecord에서 제공되며, 암호화를 위한 secret key는 레일즈 설정의 secret_key를 사용했다. (다른 key를 만들어서 사용해도 된다)

secret = SecureRandom.hex(64)
signature_key = SecureRandom.hex(64)
serializer = JSONSerializer.new # 다른 serializer를 사용해도 된다. 기본은 Marshal
ActiveSupport::MessageEncryptor.new(secret, signature_key, serializer: serializer)

Rails3

Rails3에서 secret은 Rails.configuration.secret_token를 사용하면 된다.

참고자료