2011-03-30 6 views
38

얼마 전에 라이브러리를 포함하지 않고 레일에서 문자열을 해독하고 암호화 할 수있는 가능성을 보았지만 블로그 게시물을 찾을 수 없습니다.레일즈를 사용하여 암호화, 암호 해독

아무것도 포함하지 않고 문자열을 암호화하고 해독 할 수 있기를 원합니다. 동일한 키를 사용하면 레일에있는 모든 항목, 서명 된 쿠키 등이 있습니다.

아이디어가 있으십니까?

답변

106

당신은 이것을 의미합니까? : ActiveSupport::MessageEncryptor. 여기에 레일을 재사용하는 방법 4 응용 프로그램의 비밀 :

crypt = ActiveSupport::MessageEncryptor.new(Rails.application.secrets.secret_key_base) 
encrypted_data = crypt.encrypt_and_sign('my confidental data') 

그리고 암호화 된 데이터를 해독 할 수 있습니다 :

decrypted_back = crypt.decrypt_and_verify(encrypted_data) 

은 이전 3 secret_token 구성 옵션을 사용하고 암호 화기 방법이 encryptdecrypt이었다 레일.

+6

꽤 포주였습니다. – Kristian

+4

내가 찾던 훌륭한 솔루션, 감사합니다! ActiveSupport :: MessageEncryptor 인터페이스가 Rails 4.0 이후로 변경되어 예가 오래되었습니다. decrypt 대신에 encrypt 및 decrypt_and_verify 대신에 encrypt_and_sign을 호출해야합니다. –

+0

George 씨, 답변을 업데이트하고 새로운 예를 만들었습니다. – gertas