2011-04-05 8 views

답변

11

기본적으로 Devise는 AFrypt가 해독 할 수없는 BCrypt 알고리즘을 사용합니다. 암호를 해독 할 수 있어야하는 경우 AES과 같은 다른 알고리즘을 사용해야합니다.

Devise에 대한 AES 지원을 확장하는 gem이 있습니다.

참고 : 전적으로 학문적 관심사로이 질문에 대답했습니다. BCrypt를 계속 사용하는 것이 좋습니다. 암호 관리는 위험한 사업이므로 심각한주의를 기울일 것을 권장합니다.

+7

하나는 간단하고 매우 가볍게 강조하지 않아야합니다. 반복합니다. 결코 사용자 암호를 해독하지 마십시오! 사용자의 신용 카드 정보를 해독하지 않는 것처럼. 당신은 그 (것)들을위한 방법을 공급하고, 그 (것)들을 다시 놓기 만하면됩니다. – Ekampp

+0

@Ekampp 잘 IMAP와 같은 외부 서비스와 상호 작용하기 위해 암호가 필요할 때 암호 해독없이 문제가 발생합니다. 물론 솔루션은 인증서로 oath2 인증을 사용할 수 있지만 많은 오버 헤드가 발생합니다. 가끔 AES 인증이 의미가 있습니다. – Donato

0

암호는 사용자가 제공 한 암호를 사용하여 암호화하고 데이터베이스의 암호화 된 암호와 비교할 수 있습니다 (성공한 시도와 일치하는 경우). 그러나 데이터베이스에서 암호를 해제하는 것은 불가능하므로 아무도 모든 암호를 빼낼 수 없습니다. 이것은 보안 기능입니다.

+0

:

당신은이 웹 사이트에 새로운 암호화 된 비밀번호를 생성 할 수 있습니까? – AnApprentice

+0

정확히 무엇을할까요? – Zepplock

0
class User < ActiveRecord::Base 

    devise :database_authenticatable... 

    def verify_password?(password) 
    encryptor_class = Devise::Encryptors.const_get(Devise.encryptor.to_s.classify) 
    encryptor_digest = encryptor_class.digest(password, Devise.stretches, self.password_salt, Devise.pepper) 
    encryptor_digest == self.encrypted_password 
    end 
end 
2

Devise는 BCrypt를 사용합니다. USERS 테이블에서 encrypted_password 필드를 수정하고 암호화 된 새 암호를 입력해야합니다. 당신이 그렇게 어떻게 http://www.bcrypt-generator.com/

관련 문제