2013-04-12 3 views
-4

내 응용 프로그램에 나중에 사용할 수 있도록 텍스트 형식의 암호화가 필요한 서버 암호를 저장해야합니다. 파이썬에서이 작업을 수행 할 수 있습니까? 설명 해주십시오.파이썬 암호화 프로그램을 만드는 방법은 무엇입니까?

+0

진지하게, 왜 downvote? – pynovice

+0

당신이 질문을하지 않았기 때문에 downvotes가 의심 스럽다. (어떻게 암호화 알고리즘을 작성 하는가?) 대답을 원했는지 (어떤 암호화 알고리즘을 사용해야합니까?) – Patashu

답변

3

개인 호기심을위한 것이 아닌 한 직접 암호화/암호 해독 알고리즘을 작성하지 마십시오. 암호화는 매우 어려운 측면이 많으며 한 가지 오류를 범하면 보안이 0입니다.

또한 암호화 기능을 사용하기 전에 올바르게 사용하는지 조금만 연구하십시오. 예를 들어, 되돌릴 수있는 암호화에 암호를 저장하지 마십시오. 암호의 일반 텍스트는 필요하지 않습니다. 암호화 해시라고하는 단방향 암호화를 사용하여 사용자가 입력 한 내용의 암호화 해시와 비교하려고합니다. 그것들이 일치한다면, 그것들을 들여 보내십시오. 이제 데이터베이스는 해싱이 되돌릴 수 없기 때문에, 원래의 패스워드를 추적 할 수 없습니다.

(여기서도 멈추지 않습니다. 해싱 알고리즘이 '천천히'이기 때문에 크래커가 수천 번의 시도를 시도해야하지만 합법적 인 사용으로 몇 번 시도해 볼 수 있습니다. . 해시 확인하려면 당신은 어떻게해야 느린위한 조정 가능한 매개 변수가있는 bcrypt 같은 알고리즘이 필요합니다, 그래서 심지어 미래의 증거 '느린'.)

http://docs.python.org/2/library/crypto.html

https://pypi.python.org/pypi/pycrypto

* 제외 무지개 테이블, 이는 크래커가 미리 계산하는 곳입니다. 그는 모든 공통 암호를 해싱 한 결과입니다. 이를 막기 위해 암호를 해싱하기 전에 암호를 결합한 다음 사용자와 함께 소금을 저장하십시오.

+0

아니요 아니요, 암호의 일반 텍스트가 필요합니다. 나중에 사용하기 위해. 일반 텍스트 암호를 사용하여 서버로 ssh해야합니다. – pynovice

+0

@ user2032220 그렇다면 AES를 사용하고 아무도 AES에 사용하는 키에 액세스 할 수 없도록주의하십시오. (시작을 위해, 당신 등을 제외한 모든 계정에 대해 읽기 액세스가 거부 된 장소에 저장해야합니다.) – Patashu

+0

예. AES가 최선의 선택입니다. 프로그램 자체에서 키가 필요합니다. 열쇠는 어디에 두어야합니까? – pynovice

관련 문제