码迷,mamicode.com
首页 > 编程语言 > 详细

python-加解密

时间:2018-11-12 19:50:06      阅读:333      评论:0      收藏:0      [点我收藏+]

标签:mode   key   default   对称加密   from   algo   包括   算法   com   

cryptography库既包括高级规则,也包括普通密码算法(如对称密码、消息摘要和关键派生函数)的低级接口。

$ pip install cryptography

例如,用密码学的高层对称加密方式加密:

from cryptography.fernet import Fernet
key = Fernet.generate_key()
f = Fernet(key)
token = f.encrypt(b"hello,world!") 
print token
print key
‘...‘
print f.decrypt(token)
gAAAAABbzaV91tfQiIYclT05Kb30uA6-XDKsp13jHx7lpIvML3NHCtJCxqTIgArIqQgTocnsBanR51vDkeh5NcDkN_B2kL2bDA==
tbpwFLqSZFa6Tufae7JW5gqrxGPQFtRCrfl-gyDIuiw=
hello,world!

AES :

 import os
 from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
 from cryptography.hazmat.backends import default_backend
 from cryptography.hazmat.primitives import padding
 padder = padding.PKCS7(128).padder()
 backend = default_backend()
 key = os.urandom(32)
 iv = os.urandom(16)
 cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=backend)
 encryptor = cipher.encryptor()
padded_data = padder.update(b"myhaspl")
padded_data += padder.finalize()
print padded_data
ct = encryptor.update(padded_data) + encryptor.finalize()
decryptor = cipher.decryptor()
decryptorData=decryptor.update(ct) + decryptor.finalize()
unpadder = padding.PKCS7(128).unpadder()
data = unpadder.update(decryptorData)
data + unpadder.finalize()
myhaspl
Out[22]:‘myhaspl‘
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Created on Tue Oct  2 13:23:27 2018

@author: myhaspl
@email:myhaspl@myhaspl.com
@blog:dmyhaspl.github.io
"""
import os
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import padding
padder = padding.PKCS7(128).padder()
backend = default_backend()
key = os.urandom(32)
iv = os.urandom(16)
cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=backend)
encryptor = cipher.encryptor()
messages = raw_input("Please input your message: ")
padded_data = padder.update(messages )
padded_data += padder.finalize()
print padded_data
ct = encryptor.update(padded_data) + encryptor.finalize()
decryptor = cipher.decryptor()
decryptorData=decryptor.update(ct) + decryptor.finalize()
unpadder = padding.PKCS7(128).unpadder()
data = unpadder.update(decryptorData)
data + unpadder.finalize()
Please input your message: hello, world,I am myhaspl.
hello, world,I am myhaspl.
Out[24]:
‘hello, world,I am myhaspl.‘

python3:

#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Created on Tue Oct  2 13:23:27 2018

@author: myhaspl
@email:myhaspl@myhaspl.com

"""
import os
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import padding
padder = padding.PKCS7(128).padder()
backend = default_backend()
key = os.urandom(32)
iv = os.urandom(16)
cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=backend)
encryptor = cipher.encryptor()
messages = input("Please input your message: ")
messages=bytes(messages,"utf-8")
padded_data = padder.update(messages )
padded_data += padder.finalize()
print(padded_data)
ct = encryptor.update(padded_data) + encryptor.finalize()
decryptor = cipher.decryptor()
decryptorData=decryptor.update(ct) + decryptor.finalize()
unpadder = padding.PKCS7(128).unpadder()
data = unpadder.update(decryptorData)
print(data + unpadder.finalize())

python-加解密

标签:mode   key   default   对称加密   from   algo   包括   算法   com   

原文地址:http://blog.51cto.com/13959448/2315721

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!