2013-02-11 4 views
0

저는 등록을 위해 파이썬에서 새로운 응용 프로그램을 만듭니다. 데이터베이스의 모든 필드를 저장하고 사용자를 성공적으로 만들었지 만 암호는 등록 당시 입력 한대로 저장됩니다. 어떻게 암호를 사용하여 파이썬의 기본 기능을 암호화하거나 사용합니까?파이썬에서 암호를 암호화 하시겠습니까?

제안 하시겠습니까?

+1

암호를 암호화해서는 안되며 암호를 해시해야합니다. https://docs.djangoproject.com/en/dev/topics/auth/passwords/ –

+0

다음 내용을 읽어보십시오. http://www.tarsnap.com/scrypt/scrypt.pdf – akira

답변

0

실제 암호화를 들어, M2Crypto 또는 PyCrypto을 시도 할 수 있습니다. 아마도 당신이 찾고있는 것들 일 것입니다. 당신은 암호화 방법을 가장 잘 맞게 체크 아웃 수도로서 좀 더 답변을 읽기 좋아하면

(이 다소 SO 후 관련 : 그러나, 평균 사용자에 대한 암호를 당황하게하는 다른 방법이있다 Recommended Python cryptographic module? .

hashlib는 (. "SHA1, SHA224, SHA256, SHA384 및 SHA512을"예를) 간단한 예를 들어 여러 해시 알고리즘을 제공합니다 :

import hashlib 
enc = hashlib.md5() 
enc.update("Somerandompassword") 
print enc.hexdigest() 

을 그리고 이것은 당신에게 MD5 "Somerandompassword"을 인쇄합니다 : 를,693,210

그러나, 예를 들어 (64 기수) 인코딩위한 시도 :

import base64 
enc = base64.b64encode("Somerandompassword") 

디코딩

dec = base64.b64decode("U29tZXJhbmRvbXBhc3N3b3Jk") 
print dec 

인쇄됩니다 : Somerandompassword

+0

md5는 암호화 방법이 아니지만 해시입니다 방법. 그리고 해독 할 수 없습니다 (전체 요점입니다). 그 외, md5는 암호 해싱에 더 이상 적합하지 않으며, 더 강력하게 사용하십시오. – Ikke

+0

그건 아주 좋은 지적입니다. 너는 그걸 확실히 옳다. 내 잘못. – JohnZ

+1

base64는 암호화가 아니며 인코딩 방법입니다. 평범한 텍스트만큼이나 (누구나 해독 할 수 있습니다). – Ikke

2

오프라인 암호를 만들려면 더 비싼 크랙, bcrypt을 사용할 수 있습니다. 당신이 다음 stdlib로 제한하는 경우

, crypt module on Unix가 :

hashed = crypt.crypt(plaintext) 
+0

+1 bcrypt는 +1입니다. 최선의 선택. Django에서 (저자가 태그를 사용하여 만든 것으로 의심되는)이 태그는 ['django.contrib.auth.hashers.BCryptPasswordHasher'] (https://docs.djangoproject.com/en/dev/)라고합니다. 주제/인증/비밀번호 /) –

1

당신이 암호를 해시해야, 다음 코드는 settings.py에 PASSWORD_HASHERS에 따라 원시 입력 암호 해시

from django.contrib.auth.hashers import make_password 
pass = make_password(raw_pass) # hashing is done here 
user.set_password(pass) 
1

이러한 물건을 직접 구현하지 마십시오. 잘못했을 가능성이 있습니다.

암호 저장을 위해 일부 해독 가능한 인코딩 또는 대칭 암호화 또는 hashlib의 단순 해시 또는 임의로 소금물에 절인 해시를 사용하는 것이 현재 주요한 모든 실패입니다.

django를 사용하는 경우 django에서 제공하는 강력한 알고리즘 (일반적으로 bcrypt, pbkdf2, sha512_crypt 중 하나)을 사용하십시오.

django를 사용하지 않을 때는 passlib을 사용하십시오. - 설명서를 읽은 후.

http://code.google.com/p/passlib/

관련 문제