2016-09-07 3 views
-1

사용자가 입력 한 암호가 안전 할 정도로 암호 해싱에 Werkzeug를 사용하고 있습니다.암호를 문자열로 변환 werkuzeug python

말할 수 있습니다 다음과 같이 내 응용 프로그램은 다음과 같습니다

사용자가 내가 check_password_hash를 사용하고 내부 사용자가 로그인합니다 로그인됩니다

.

사용자가 로그인하면 암호를 표시하고 싶습니다.

문제 나 발생하고있다 :

가 어떻게 사용자에게 암호를 표시하는 문자열로 해시 된 암호를 다시 변환합니까?

>>> import werkzeug.security as ws 
>>> ws.generate_password_hash('abcdefg') 
'pbkdf2:sha1:1000$fYAXLNA6$637528ae2fa195304c328d585e805b164f1c718f' 
>>> ws._hash_internal('pbkdf2:sha1:1000', 'fYAXLNA6', 'abcdefg') 
('637528ae2fa195304c328d585e805b164f1c718f', 'pbkdf2:sha1:1000') 

을 지금은 'ABCDEFG'이 '6375 .....'다시 변환 어떻게 다음과 같이

내 코드는?

나는 데이터베이스와 다른 모든 것들에 대한 액세스 권한이 있습니다. 기본적으로 저는 관리자입니다!

참고 : 로그인하는 동안 입력 한 암호를 사용할 수 없습니다. 데이터베이스의 암호 만 사용할 수 있습니다.

+0

왜 사용자에게 암호를 표시 하시겠습니까? – vz0

+0

사실 암호는 사용자에게 표시되지 않습니다.이 암호는 다른 웹 사이트 (https://vtop.vit.ac.in/parent/parent_login.asp)를 긁어 내고 필요없이 자동으로 사용자의 출석에 사용됩니다 DOB, 휴대 전화 번호 등을 모두 입력하려면 세션을 저장하고 사용자가 로그인 할 때마다 출석을 확인할 수 있습니다. – Anivarth

+0

다른 문제입니다. 귀하의 질문에 분명히해야합니다, 그렇지 않으면 내 대답은 일반적인 대답입니다. 자신의 암호 관리자를 작성해야합니다. 그들이 일반적으로하는 일은 마스터 비밀번호로 데이터를 암호화하는 것이지만 문제는 사용할 마스터 비밀번호입니다. – vz0

답변

2

사용자가 로그인하면 암호를 표시하고 싶습니다.

암호를 해싱하는 모든 목적과 이유는이 작업을 수행 할 수 없다는 것입니다. 당신이 아니라 다른 누구도 아닙니다.

누군가가 암호 목록을 사용하여 데이터베이스에 액세스하거나 도용 한 경우 해시를 원래 암호로 다시 변환하는 작업은 실제로 비용이 많이 듭니다. 하나의 암호를 깨고 되돌리려면 백만 년이 필요합니다.

+0

그래서 암호 해시 대신 안전을 손상시키지 않고 구현할 수있는 솔루션이 있습니까? – Anivarth

1

해싱을 사용하는 동안 원본 텍스트를 다시 가져올 수 없습니다. 일반적으로 모든 암호는 암호를 비공개 (사용자에게만 알려짐)하기 위해 해시 값으로 저장됩니다. 모든 서버가이를 구현합니다. 암호를 다시 얻으려면 대칭 키 암호화를 사용해야합니다. 비밀 키가 클라이언트와 서버간에 공유되는 곳 (하지만 아주 나쁜 습관입니다.) 해시를하는 것이 좋습니다.