2014-12-17 3 views
2

프로그래밍이 처음인데 이것이 가능할 지 궁금합니다. 암호를 한 번 입력 한 다음 다음에 스크립트를 열 때 스크립트를 진행해야하는 암호로 보호 된 스크립트를 만들려고합니다. 나는 파일에 암호를 저장하고 암호화하고 다음 번에 스크립트가 열릴 때 파일이 존재하는지 확인하려고합니다. 내가 당면한 문제는 패스워드가 일치하는지 확인하는 것이다. 왜냐하면 원래 패스워드는 로컬 변수로서의 함수이기 때문이다.로컬 변수와 전역 변수 파이썬

def createFile(): 
    pw = input('Enter Password: ') 
    pw2 = input('ReType Password: ') 
    if pw == pw2:   
     newPw = encrypt(pw, 10) #encodes the string with a key in a seperate encrypt function 
     pwFile = open('PW.txt', 'a') 
     pwFile.write(newPw) 
     pwFile.close() 
    else: 
     print('The passwords do not match') 
     createFile() 


if os.path.isfile('PW.txt'): 
    print('File exists') 
    pwCheck = input('What is the password? ') 
    #I can not check pwCheck == pw since pw is a local var. 

    #progression of script here 
else: 
    createFile() 

로컬 변수를 전역 변수로 만드는 것은 좋지 않은 것으로 알고 있습니다. 이 일을하기 위해 제가 지금까지 가지고있는 것을 재구성 할 수있는 방법이 있습니까? 필자가 작성한 것처럼 가능한 해결책을 찾지 못했지만 지금은 테스트 할 시간이 없다. pwCheck에 대해 동일한 키로 동일한 암호화 기능을 실행하고 PW.txt의 첫 번째 줄에 ==가 있는지 확인합니까? 그게 맞습니까? 아니면 다른 해결책이 있습니까?

감사합니다. 윈도우를 사용

, 대신 "암호화"의

+4

당신은 파일에서 기존 암호를 읽어 암호를 해독하고, 암호의 * 해시 *를 저장하기 위해 현명하다고 pwCheck''에 대해 – Claudiu

+2

참고를 확인해야, 다음의 해시를 비교 사용자가 파일에있는 내용을 입력합니다. – jonrsharpe

답변

1

파이썬 3.4, 아마 그런 다음, 이후에 입력 한 암호 해시와 파일에 저장된 해시 대를 확인할 수 있습니다 .. 1 단방향 해시를 사용하여 ... 당신이 보안에 대해 관심이 있다면, 당신은 게이트 액세스 다른 인증 메커니즘을 사용해야하기 때문에 정말,이 단지 운동입니다 희망

def createFile(): 
    pw = input('Enter Password: ') 
    pw2 = input('ReType Password: ') 
    if pw == pw2:   
     newPw = sha.new(pw).digest 
     pwFile = open('PW.txt', 'a') 
     pwFile.write(newPw) 
     pwFile.close() 
    else: 
     print('The passwords do not match') 
     createFile() 


if os.path.isfile('PW.txt'): 
    print('File exists') 
    pwCheck = input('What is the password? ') 
    previous = open('PW.txt', 'r') 
    prevPass = previous.read() 
    hashed = sha.new(pwCheck).digest() 
    if (hashed==prevPass): 
     #progression of script here 
else: 
    createFile() 
1

:처럼 뭔가. 가장 명백하게, 유닉스 허가, 그리고 sudo는 게이트 액세스.

연습 일 뿐이므로 파일에 대한 입력을 확인하는 기능 만 있으면됩니다. 뭔가 같이 :

def doAuth(): 
    isAuthed = getPassInput() == getPassFromFile() 
    if isAuthed: 
     return True 
    else: 
     raise HellNoException("Passwords differ")