Last active
December 17, 2015 22:49
-
-
Save lyhapple/5684375 to your computer and use it in GitHub Desktop.
使用AES算法,对用户输入的密码进行加解密.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#coding=utf-8 | |
# Created with PyCharm. | |
# Author: liyinhui | |
# Date: 13-5-31 | |
# Time: 下午1:49 | |
# 基于PyCrypto库实现 | |
import base64 | |
from Crypto.Cipher import AES | |
iv = "fedcba9876543210" | |
def transform_key(user): | |
keys = [x for x in "rzrk.keyrzrk.key"] | |
length = len(keys) if len(keys) < len(user) else len(user) | |
for i in range(length): | |
keys[i] = chr(ord(keys[i]) + ord(user[i])) | |
key = "".join(keys) | |
return key | |
def encrypt(user, password): | |
""" | |
对用户密码进行加密 | |
:param user: 用户名称 | |
:param password: 密码 | |
""" | |
key = transform_key(user) | |
pAesCipher = AES.AESCipher(key, AES.MODE_CBC, iv) | |
encrypt_value = pAesCipher.encrypt("%16s" % password) | |
if len(encrypt_value) != len("%16s" % password): | |
return password | |
result = base64.urlsafe_b64encode(encrypt_value) | |
print result | |
return result | |
def decrypt(user, password): | |
""" | |
对用户的密码进行解密, 先解码, 再用AES解密 | |
:param user: 用户名称 | |
:param password: base64编码的用户密码 | |
""" | |
encrypt_value = base64.urlsafe_b64decode(password) | |
key = transform_key(user) | |
pAesCipher = AES.AESCipher(key, AES.MODE_CBC, iv) | |
decrypt_value = pAesCipher.decrypt("%16s" % encrypt_value) | |
print decrypt_value.strip() | |
if __name__ == "__main__": | |
user = "00131aaaa" | |
password = "123456" | |
encode_pwd = encrypt(user, password) | |
decrypt(user, encode_pwd) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment