python3 常见解密加密算法实例分析【base64、MD5等】

yipeiwu_com5年前Python基础

本文实例讲述了python3 常见解密加密算法。分享给大家供大家参考,具体如下:

一.使用base64

Base64编码,64指A-Z、a-z、0-9、+和/这64个字符,还有“=”号不属于编码字符,而是填充字符。

优点:方法简单

缺点:不保险,别人拿到密文可以自己解密出明文

编码原理:将3个字节转换成4个字节((3 X 8)=24=(4X6)),先读入3个字节,每读一个字节,左移8位,再右移四次,每次6位,这样就有4个字节了。

解码原理:将4个字节转换成3个字节,先读入4个6位(用或运算),每次左移6位,再右移3次,每次8位,这样就还原了。

Python3中base64模块与Python2使用方法有了明显的不一样,接下来简要介绍下base64模块。

Python 3.5.2+ (default, Aug  5 2016, 08:07:14)
[GCC 6.1.1 20160724] on linux
Type "help", "copyright", "credits" or "license" for more information.

首先导入base64模块

>>> import base64
>>> my_str='hello'

然后把字符串转码为UTF-8格式:

>>> utf_str=my_str.encode(encoding="utf-8")
>>> utf_str
b'hello'

我们试着用Base64方式加密:

>>> word=base64.b64encode(utf_str)
>>> word
b'aGVsbG8='

最后用Base64方式解密:

>>> hello=base64.b64decode(word.decode())
>>> hello
b'hello'
>>> hello.decode()
'hello'

可以看到,已经成功解密出来!

二.使用pycrypto

Python有个专门的加密解密工具包pycropto,这个包里面实现了MD2,MD4,MD5,RIPEMD,SHA1,SHA256等加密算法。

>>> from Crypto.Hash import MD5
>>> obj = MD5.new()
>>> obj.update(b"hello")
>>> obj.hexdigest()
>>> obj.hexdigest()
'5d41402abc4b2a76b9719d911017c592'

PS:关于加密解密感兴趣的朋友还可以参考本站在线工具:

文字在线加密解密工具(包含AES、DES、RC4等):
http://tools.jb51.net/password/txt_encode

MD5在线加密工具:
http://tools.jb51.net/password/CreateMD5Password

在线散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt

在线MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha

在线sha1/sha224/sha256/sha384/sha512加密工具:
http://tools.jb51.net/password/sha_encode

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python加密解密算法与技巧总结》、《Python编码操作技巧总结》、《Python文件与目录操作技巧汇总》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程

希望本文所述对大家Python程序设计有所帮助。

相关文章

详解安装mitmproxy以及遇到的坑和简单用法

详解安装mitmproxy以及遇到的坑和简单用法

mitmproxy 是一款工具,也可以说是 python 的一个包,在命令行操作的工具。 MITM 即中间人攻击(Man-in-the-middle attack) 使用这个工具可以在...

python监测当前联网状态并连接的实例

如下所示: def test1(): import os return1=os.system('ping 8.8.8.8') if return1: print 'ping...

Django中URL视图函数的一些高级概念介绍

说到关于请求方法的分支,让我们来看一下可以用什么好的方法来实现它。 考虑这个 URLconf/view 设计: # urls.py from django.conf.urls.de...

Python中使用中文的方法

先来看看python的版本: >>> import sys >>> sys.version '2.5.1 (r251:54863, Apr...

浅析Python的web.py框架中url的设定方法

浅析Python的web.py框架中url的设定方法

网页中的数据在传递的时候有GET和POST两种方式,GET是以网址的形式传参数,在web.py中有着很好的匹配,如果我们配置以下的urls urls =( '/','inde...