27 lines
621 B
Python
27 lines
621 B
Python
|
#! /usr/bin/python
|
||
|
|
||
|
import hashlib
|
||
|
import os
|
||
|
|
||
|
from base64 import urlsafe_b64encode as encode
|
||
|
from base64 import urlsafe_b64decode as decode
|
||
|
|
||
|
def makeSecret(password):
|
||
|
salt = os.urandom(4)
|
||
|
h = hashlib.sha1(password)
|
||
|
h.update(salt)
|
||
|
return "{SSHA}" + encode(h.digest() + salt)
|
||
|
|
||
|
def checkPassword(challenge_password, password):
|
||
|
challenge_bytes = decode(challenge_password[6:])
|
||
|
digest = challenge_bytes[:20]
|
||
|
salt = challenge_bytes[20:]
|
||
|
hr = hashlib.sha1(password)
|
||
|
hr.update(salt)
|
||
|
return digest == hr.digest()
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
import sys
|
||
|
print(makeSecret(sys.argv[1]))
|