mirror of
				https://github.com/langgenius/dify.git
				synced 2025-10-31 19:03:09 +00:00 
			
		
		
		
	 4fd2743efa
			
		
	
	
		4fd2743efa
		
			
		
	
	
	
	
		
			
			Co-authored-by: douxc <douxc512@gmail.com> Co-authored-by: Garfield Dai <dai.hai@foxmail.com>
		
			
				
	
	
		
			27 lines
		
	
	
		
			833 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			27 lines
		
	
	
		
			833 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| import base64
 | |
| import binascii
 | |
| import hashlib
 | |
| import re
 | |
| 
 | |
| password_pattern = r"^(?=.*[a-zA-Z])(?=.*\d).{8,}$"
 | |
| 
 | |
| 
 | |
| def valid_password(password):
 | |
|     # Define a regex pattern for password rules
 | |
|     pattern = password_pattern
 | |
|     # Check if the password matches the pattern
 | |
|     if re.match(pattern, password) is not None:
 | |
|         return password
 | |
| 
 | |
|     raise ValueError("Password must contain letters and numbers, and the length must be greater than 8.")
 | |
| 
 | |
| 
 | |
| def hash_password(password_str, salt_byte):
 | |
|     dk = hashlib.pbkdf2_hmac("sha256", password_str.encode("utf-8"), salt_byte, 10000)
 | |
|     return binascii.hexlify(dk)
 | |
| 
 | |
| 
 | |
| def compare_password(password_str, password_hashed_base64, salt_base64):
 | |
|     # compare password for login
 | |
|     return hash_password(password_str, base64.b64decode(salt_base64)) == base64.b64decode(password_hashed_base64)
 |