Python 스크립트에서 사용할 암호를 안전하게 저장
일부 Python 스크립팅에서 사용할 암호를 안전하게 저장하는 방법을 찾고 있습니다. 나는 다른 것에 로그인 할 것이며 스크립트 자체에 암호를 일반 텍스트로 저장하고 싶지 않습니다.
대신 나는 그 암호를 안전하게 저장할 수있는 것이 있는지 궁금해서 처음에 스크립트에 입력 할 수있는 마스터 암호와 같은 것을 사용하여 검색했습니다.
마스터 키를 직접 알아 두십시오. 하드 코딩하지 마십시오.
사용 py-bcrypt(bcrypt), 강력한 해싱 기술은 암호를 직접 생성합니다.
기본적으로 할 수 있습니다 (아이디어 ...)
import bcrypt
from getpass import getpass
master_secret_key = getpass('tell me the master secret key you are going to use')
salt = bcrypt.gensalt()
combo_password = raw_password + salt + master_secret_key
hashed_password = bcrypt.hashpw(combo_password, salt)
소금과 해시 된 암호를 어딘가에 저장하여 암호를 사용해야 할 때마다 암호화 된 암호를 읽고 다시 입력하는 원시 암호에 대해 테스트합니다.
이것은 기본적으로 요즘 로그인이 작동하는 방식입니다.
일반적으로 secrets.py다른 Python 스크립트와 별도로 저장되며 버전 제어가 없습니다. 그런 다음 필요할 때마다 from secrets import <required_pwd_var>. 이 방법을 사용하면 자체적으로 재창조하지 않고도 운영 체제에 내장 된 파일 보안 시스템에 의존 할 수 있습니다.
Base64인코딩 / 디코딩을 사용 하는 것은 완전히 안전하지는 않지만 암호를 난독 화하는 또 다른 방법입니다.
추가 정보 -Python 스크립트에서 비밀번호 숨기기 (안전하지 않은 난독 화만 해당)
안전한 방법은 AES로 민감한 데이터를 암호화하는 것이며 암호화 키는 AES의 암호화 키를 암호화 / 복호화하는 데 사용되는 마스터 비밀번호 인 PBE (암호 기반 키 파생 기능)에 의해 파생됩니다.
마스터 비밀번호-> 보안 키-> 키로 데이터 암호화
pbkdf2 를 사용할 수 있습니다.
from PBKDF2 import PBKDF2
from Crypto.Cipher import AES
import os
salt = os.urandom(8) # 64-bit salt
key = PBKDF2("This passphrase is a secret.", salt).read(32) # 256-bit key
iv = os.urandom(16) # 128-bit IV
cipher = AES.new(key, AES.MODE_CBC, iv)
salt / iv / passphrase를 저장하고 동일한 salt / iv / passphase를 사용하여 해독하십시오.
Weblogic은 유사한 접근 방식을 사용하여 구성 파일의 암호를 보호했습니다.
참고 URL : https://stackoverflow.com/questions/12042724/securely-storing-passwords-for-use-in-python-script
'Program Tip' 카테고리의 다른 글
| PHP 클래스 인스턴스화. (0) | 2020.11.02 |
|---|---|
| GetStringUTFChars가 복사본을 반환하면 ReleaseStringUTFChars를 호출해야합니까? (0) | 2020.11.02 |
| Selenium 오류-원격 WebDriver에 대한 HTTP 요청이 60 초 후에 시간 초과되었습니다. (0) | 2020.11.02 |
| Selenium은 헤드리스 브라우저 테스트를 지원합니까? (0) | 2020.11.02 |
| jsFiddle로 두 개 이상의 프레임 워크를 선택하려면 어떻게해야합니까? (0) | 2020.11.02 |