레일즈에서는 암호화를 위해 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
위의 예제에서 사용된 MessageEncryptor
는 ActiveRecord
에서 제공되며, 암호화를 위한 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
를 사용하면 된다.