2010-04-26 6 views
6

require 'digest/sha1'을 사용하여 암호를 암호화하고 데이터베이스에 저장합니다. 로그인하는 동안 나는 데이터베이스에 저장된 암호화 된 암호와 일치하여 인증을하고 다시 암호를 입력하여 암호 필드에 암호를 입력하십시오. 지금은 모든 것이 잘 작동하지만 지금은 '비밀번호 찾기'기능을 사용하고 싶습니다. 이렇게하려면 데이터베이스에 저장된 비밀번호를 해독하여 원본 비밀번호를 찾아야합니다. digest/sha1을 사용하여 해독하는 방법은 무엇입니까? 아니면 암호 해독을 지원하는 알고리즘도 알고 있습니까? &?레일에서의 암호화/암호 해독

레일에 루비를 사용하고 있으므로 Ruby를 사용해야합니다.

+0

더 나은 옵션은 복구를 허용하지하는 것이 .. 후 사용자가 새 하나를 선택해야합니다. 가장 안전한 방법이고 가장 저렴합니다. – baash05

답변

10

에 짧은 대답에 포함되지 않습니다.

이 암호 재설정 다시 관심이있을 수 있습니다 http://www.binarylogic.com/2008/11/16/tutorial-reset-passwords-with-authlogic/

당신이 다음 AES 같은 것을 사용해야 암호화/암호 해독을 수행합니다. 일단 암호화/복호화를 사용하기 시작하면 키 관리에 대해서도 걱정해야합니다.

아래 OP에 대한 귀하의 의견과 관련하여 CC 정보를 저장하려고한다면 암호, 키 관리 등에 대해 알고있는 사람과 관련 법률 및 규제 측면을 알고있는 보안 담당자를 얻는 것이 좋습니다. . ezcrypto 보석에서

+0

그렇다면 암호 해독 할 수있는 2way Algoritham을 알고 싶습니다. 제발 Horace 호에 의해 주어진 답변 아래에 내 이전의 코멘트를 보시기 바랍니다. – Salil

6

은 암호를 암호화합니다. 대신 암호의 해시를 저장합니다 (소금으로 더 좋음).

~ 을 잊어 버리면 대개 암호가 재설정 된 다른 채널 (예 : 전자 메일 알림)을 통해 (다시) 인증됩니다.

시계 http://railscasts.com/episodes/209-introducing-devise 이미 미리 제작 된 것이 필요한 경우

편집 : 당신이 정말 암호화가 필요한 경우은 "OpenSSL을 루비"

안전한 작업을위한 간단한 해결책이 결코 구글. 귀하의 구현은 약점으로 결정됩니다. 링크.

그래서, 내 추천은, SHA1 당신이 그것을 취소 할 수 없습니다 편도 함수이다 SO ;-)

+0

나는 미래의 일부 기밀 데이터 (예 : 신용 카드 번호)를 저장하기 때문에 필요합니다. 그래서 암호 해독이 필요합니다. – Salil

+0

"openssl"에 대한 링크로 내 대답 (그렇지 않은 대답)을 편집했습니다. – ohho

2

, 당신은 암호를 암호화 없지만 항상 암호화 되 소금을 저장 안가.

그러나 기밀 정보 같은 다른 종류의 데이터를 암호화하는 것은 완벽합니다. Encryptor 간단하지만 강력한 OpenSSL 용 래퍼입니다. 모든 클래스의 속성을 암호화/암호 해독하는 기능을 제공합니다. 다른 데이터베이스 필드는 attr_enrypted 보석을

https://github.com/shuber/attr_encrypted

체크 아웃 그러나 다른 사람이 언급 한 바와 같이 암호에이 작업을 수행 할 수없는 것에

+0

그것을 사용하는 동안 나는 데이터베이스에 암호화 된 데이터를 저장할 때 문제가있다. – Salil

+0

어떤 종류의 문제입니까? –

1

는 양방향 암호화를 수행합니다.암호는 일방적으로 저장해야합니다. 암호 기능을 잊어 버린 경우 일반적으로 사용자가 새 암호를 선택할 수있는 추측 할 수없는 URL로 전자 메일을 보냅니다.

여기 예제가있다 : 사용자가 잊어 버린 경우 http://railscasts.com/episodes/274-remember-me-reset-password?view=asciicast