40 lines
		
	
	
		
			914 B
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			40 lines
		
	
	
		
			914 B
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
| #!/usr/bin/env python
 | |
| 
 | |
| import argparse
 | |
| import bcrypt
 | |
| import getpass
 | |
| 
 | |
| bcrypt_rounds=12
 | |
| 
 | |
| def prompt_for_pass():
 | |
|     password = getpass.getpass("Password: ")
 | |
| 
 | |
|     if not password:
 | |
|         raise Exception("Password cannot be blank.")
 | |
| 
 | |
|     confirm_password = getpass.getpass("Confirm password: ")
 | |
| 
 | |
|     if password != confirm_password:
 | |
|         raise Exception("Passwords do not match.")
 | |
| 
 | |
|     return password
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     parser = argparse.ArgumentParser(
 | |
|         description="Calculate the hash of a new password, so that passwords"
 | |
|                     " can be reset")
 | |
|     parser.add_argument(
 | |
|         "-p", "--password",
 | |
|         default=None,
 | |
|         help="New password for user. Will prompt if omitted.",
 | |
|     )
 | |
| 
 | |
|     args = parser.parse_args()
 | |
|     password = args.password
 | |
| 
 | |
|     if not password:
 | |
|         password = prompt_for_pass()
 | |
| 
 | |
|     print bcrypt.hashpw(password, bcrypt.gensalt(bcrypt_rounds))
 | |
| 
 |