2013-02-20 3 views
1
import sys 
import hashlib 
import getpass 
from passlib.hash import sha256_crypt 
import MySQLdb, random, os 


def SQLAddPass(username, password): 
    SQL = 'insert into user values ("%s", "%s")' % (username, password) 

    try: 
     db = MySQLdb.connect (host='localhost', user='root', db='vedio') 
     c = db.cursor() 
     c.execute(SQL) 
     db.commit() 
     c.close() 
     db.close() 
     raw_input('Record Added - press enter to continue: ') 
    except: 
     print 'There was a problem adding the record' 
     raw_input ('press enter to continue') 


def main(argv): 


    print '\nUser & Password Storage Program v.01\n' 


    username = raw_input('Please Enter a User Name: ') 
    password = sha256_crypt.encrypt(getpass.getpass('Please Enter a Password: ')) 

    try: 
     SQLAddPass(username, password) 

    except: 
     sys.exit('There was a problem saving Record!') 

    print '\nPassword safely stored in ' + sys.argv[1] + '\n'  

if __name__ == "__main__": 
    main(sys.argv[1:]) 

내 문제는 스크립트가 다음과 같은 오류 **는 파이썬에서 MySQL로 암호화 된 암호를 저장

(C와 만 작동한다는 것입니다 : \ 사용자 \ 엘지 \ 바탕 화면 \의 example.py : 14 경고 : 데이터 행 1 c.execute (SQL) 기록 추가로 열 'passwo RD'에 대한 절단 - 눌러 계속 입력 :

**

비밀번호가 데이터베이스에 안전하게 저장됩니다. 어떤 생각을 잘못했거나 코드를 변경하면 좋을지)

+0

재미있는 예외 전략이 있습니다. 두 번 한 번 예외를 처리하고 있습니다. 하지마. – matiit

답변

0

'암호'입력란이 너무 짧을 수 있습니다. varchar (64)가 필요합니다. 비밀번호 입력란의 길이는 얼마입니까?

+0

줄리안 나는 15 개를 사용했지만 제안마다 증가했으며 매력처럼 작동합니다. – Herb21

+0

@ 대니얼 덕분에 작동했습니다 덕분에 코드를 읽고 저장된 비밀번호를 확인하는 데 도움을받을 수 있습니다.이 패스_try를 만났습니다 x = 3 = raw_input을 ('사용자 이름을 입력하십시오') 이름 : 암호 = sha256_crypt.verify (getpass.getpass ("암호 입력 :"해쉬)) pass_try Herb21

1

데이터의이 (20) 기록을 가정 해 봅시다 테이블 예 10 당신은 기록을 삽입하는 길이의 암호 열이 평균 행 1

에서 열 'passwo RD'에 대한 절단 삽입 한 내용이 잘립니다. 그리고 암호는 깨질 것입니다.

표의 열 길이를 늘리십시오.

관련 문제