python 中的一些加密解密方法

因为遇到了加密解密的问题,翻看了一些关于此的博文,所以想在粗略的学习后记录下来,回顾以前并且加深印象。在以后的学习中再精细的雕琢。

基础的MD5加密

MD5 是一种单向加密技术(不可解密)。MD5加密算法简单高效且
算出的值长度都是固定的, MD5值具有强抗碰撞,对原文件哪怕只修改一个字符,所计算出的MD5值也会发生很大变化。
基于这些特性,MD5在数据校验上发挥有很大作用。

PYTHON 中 MD5 有两种生成方式

import md5

text = 'hello everyone !'
m = md5.new() 
m.update(text)
res = m.hexdigest()
print res
# 31b0c70dac41ed7ce0d185213275ae64

在python3中已经废除了MD5模块,推荐使用下面这种

import hashlib

text = 'hello everyone !'
m = hashlib.md5()
m.update(text)
print m.hexdigest()
# 31b0c70dac41ed7ce0d185213275ae64

SHA-1加密

与MD5类似,都属于hash算法,sha1加密相对于MD5加密要更安全些,但是效率相对于MD5会低一些。

import hashlib
text = "hello world !"
sha = hashlib.sha1(text)
print sha.hexdigest()
# 05966204d726546ea43af951e0c417d75dd5ac3c

HAMC 加密

hamc 同样是基于hash算法,与上面两个加密不同的是,hamc加密是以一个密钥和一个消息作为输入,生成一个消息摘要输出。
主要用于身份验证。

import hmac,hashlib
h = hmac.new(key='key',msg='hello')
h.update('world!')
ret = h.hexdigest()
print ret
# 774bd7473ce15ec74c015338cbf2d421

base64加密

base64编码方法简单,但是却并不保险,别人很容易就能获取原始数据,通常是用来对文件进行一种格式化的操作。它是一种双向加密

import base64
s = base64.b64encode("hello world !")
print s
# aGVsbG8gd29yZCAh
s1 = base64.b64decode(s)
print s1
# hello world !

AES 双向对称加密解密

AES 只是个基本算法,实现AES有若干模式,而安全性较好的是CBC模式。cbc使用密码和salt按固定算法(md5)产生key和iv加密和解密。

from Crypto.Cipher import AES
import base64

class prpcrypt(object):
    def __init__(self,key=')_9-+klo@c4t$k$w'):
        self.key = key
        self.mode = AES.MODE_CBC

    # cryptographic functions
    def encrypt(self,text):
        cryptor = AES.new(self.key,self.mode,self.key)
        length = 16
        count = len(text)
        add = length - (count % length)
        text = text + ('\0'*add)
        self.ciphertext = cryptor.encrypt(text)
        return base64.b64encode(self.ciphertext)


    def decrypt(self,text):
        cryptor = AES.new(self.key, self.mode, self.key)
        plain_text = cryptor.decrypt(base64.b64decode(text))
        print plain_text
        print plain_text.rstrip('\0')
        return 'ok'

a = prpcrypt()
text = a.encrypt("hello world!")
print text
a.decrypt(text)
  • 1
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值