数据加密

#coding: utf8
import  sys
from  Crypto.Cipher  import  AES
from  binascii  import  b2a_hex, a2b_hex
  
class  prpcrypt():
     def  __init__( self , key):
         self .key  =  key
         self .mode  =  AES.MODE_CBC
      
     #加密函数,如果text不是16的倍数【加密文本text必须为16的倍数!】,那就补足为16的倍数
     def  encrypt( self , text):
         cryptor  =  AES.new( self .key,  self .mode,  self .key)
         #这里密钥key 长度必须为16(AES-128)、24(AES-192)、或32(AES-256)Bytes 长度.目前AES-128足够用
         length  =  16
         count  =  len (text)
         add  =  length  -  (count  %  length)
         text  =  text  +  ( '\0'  *  add)
         self .ciphertext  =  cryptor.encrypt(text)
         #因为AES加密时候得到的字符串不一定是ascii字符集的,输出到终端或者保存时候可能存在问题
         #所以这里统一把加密后的字符串转化为16进制字符串
         return  b2a_hex( self .ciphertext)
      
     #解密后,去掉补足的空格用strip() 去掉
     def  decrypt( self , text):
         cryptor  =  AES.new( self .key,  self .mode,  self .key)
         plain_text  =  cryptor.decrypt(a2b_hex(text))
         return  plain_text.rstrip( '\0' )
  
if  __name__  = =  '__main__' :
     pc  =  prpcrypt( 'keyskeyskeyskeys' )       #初始化密钥
     =  pc.encrypt( "00000" )
     =  pc.decrypt(e)                    
     print  e, d
     =  pc.encrypt( "00000000000000000000000000" )
     =  pc.decrypt(e)                 
     print  e, d


import  hashlib
 
hash  =  hashlib.md5() #创建hash对象,md5:(message-Digest Algorithm 5)消息摘要算法,得出一个128位的密文
hash .update(bytes( 'admin' , encoding = 'utf-8' )) #以字符串参数更新哈希对象
print ( hash .hexdigest()) #返回十六进制数字字符串
print ( hash .digest()) #返回二进制数字字符串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值