加密解密

AES

from Crypto.Cipher import AES
def xxxxxx(message):
    key = b'asdfghjklzxcvbnm'   #16个字节
    cipher=AES.new(key,AES.MODE_CBC,key)
    ba_data=bytearray(message,encoding='utf8')
    v1= len(ba_data)
    v2=v1 % 16
    if v2 ==0:
        v3=16
    else:
       v3=16 - v2
    for i in range(v3):
        ba_data.append(v3)   #凑够16字节的倍数
    final_data=ba_data.decode('utf8')
    msg=cipher.encrypt(final_data)#要加密的字符串,必须是16字节或16字节的倍数
    return msg        #返回的是字节

res=xxxxxx('jdaalfvnfjldvbfslgbhti')           #传入的必须是字符串
print(res)
from Crypto.Cipher import AES
def xxx(message):
    key=b'asdfghjklzxcvbnm'   #相同的密文
    cipher=AES.new(key,AES.MODE_CBC,key)
    result=cipher.decrypt(message)
    data=result[0:-result[-1]]
    return str(data,encoding='utf8')
res1=xxx(res)       #传入加密过后的字节
print(res1)       #返回解密后的字符串

RSA

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import rsa
import base64
 
 
# ######### 1. 生成公钥私钥 #########
pub_key_obj, priv_key_obj = rsa.newkeys(256)
 
pub_key_str = pub_key_obj.save_pkcs1()
pub_key_code = base64.standard_b64encode(pub_key_str)
 
priv_key_str = priv_key_obj.save_pkcs1()
priv_key_code = base64.standard_b64encode(priv_key_str)
 
print(pub_key_code)
print(priv_key_code)
 
# ######### 2. 加密 #########
def encrypt(value):
    key_str = base64.standard_b64decode(pub_key_code)
    pk = rsa.PublicKey.load_pkcs1(key_str)
    val = rsa.encrypt(value.encode('utf-8'), pk)
    return val
 
 
# ######### 3. 解密 #########
def decrypt(value):
    key_str = base64.standard_b64decode(priv_key_code)
    pk = rsa.PrivateKey.load_pkcs1(key_str)
    val = rsa.decrypt(value, pk)
    return val
 
 
# ######### 基本使用 #########
if __name__ == '__main__':
    v = 'wupeiqi'
    v1 = encrypt(v)
    print(v1)
    v2 = decrypt(v1)
    print(v2)

 

posted @ 2017-08-08 23:43  柳姑娘  阅读(187)  评论(0)    收藏  举报