`
cakin24
  • 浏览: 1332268 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

pycrypto实现AES加密和解密

阅读更多

一 代码

# -*- coding: UTF-8 -*-
import string
import random
from Crypto.Cipher import AES
def keyGenerater(length):
    '''生成指定长度的秘钥'''
    if length not in (16, 24, 32):
        return None
    x = string.ascii_letters+string.digits
    return ''.join([random.choice(x) for i in range(length)]) 
def encryptor_decryptor(key, mode):
    return AES.new(key, mode, b'0000000000000000')
#使用指定密钥和模式对给定信息进行加密
def AESencrypt(key, mode, text):
    encryptor = encryptor_decryptor(key, mode)
    return encryptor.encrypt(text)
#使用指定密钥和模式对给定信息进行解密
def AESdecrypt(key, mode, text):
    decryptor = encryptor_decryptor(key, mode)
    return decryptor.decrypt(text)
if __name__ == '__main__':
    text = 'Python3.5 is excellent.'
    key = keyGenerater(16)
    #随机选择AES的模式
    mode = random.choice((AES.MODE_CBC, AES.MODE_CFB, AES.MODE_ECB, AES.MODE_OFB))
    if not key:
        print('Something is wrong.')
    else:
        print('key:', key)
        print('mode:', mode)
        print('Before encryption:', text)
        #明文必须以字节串形式,且长度为16的倍数
        text_encoded = text.encode()
        text_length = len(text_encoded)
        padding_length = 16 - text_length%16
        text_encoded = text_encoded + b'0'*padding_length
        
        text_encrypted = AESencrypt(key, mode, text_encoded)
        print('After encryption:', text_encrypted)
        text_decrypted =AESdecrypt(key, mode, text_encrypted)
        print('After decryption:', text_decrypted.decode()[:-padding_length])

 

二 运行结果
E:\python\python可以这样学\第18章 密码学编程\code>python AES_test.py
('key:', 'D5pcO6iu0HIbj3I2')
('mode:', 1)
('Before encryption:', 'Python3.5 is excellent.')
('After encryption:', '\xf4\x15\x9f\xaf\xea\xd0\n\x03\xfdf\xf6}9\xaa\xa34\xb4\x1eL2\x0e \x16\xa5 \xff?\x8bA\x8e\xdd\xa8')
('After decryption:', u'Python3.5 is excellent.')
1
0
分享到:
评论

相关推荐

    Python基于pycrypto实现的AES加密和解密算法示例

    本文实例讲述了Python基于pycrypto实现的AES加密和解密算法。分享给大家供大家参考,具体如下: 一 代码 # -*- coding: UTF-8 -*- import string import random from Crypto.Cipher import AES def keyGenerater...

    python27模块pycrypto用于aes加密,安装简单

    pycrypto-2.6.win-amd64-py2.7,这个资源是Python27环境下的,用于aes加解密,网上下载的好多都用不了,用pip安装也是报错。 这个是我亲自测试能用的,而且安装简单,下一步下一步即可。 上传备用,同时又需要的也...

    python实现AES加密与解密

    AES加密方式有五种:ECB, CBC, CTR, CFB, OFB 从安全性角度推荐CBC加密方法,本文介绍了CBC,ECB两种加密方法的python实现 python 在 Windows下使用AES时要安装的是pycryptodome 模块  pip install pycryptodome ...

    Python AES 加密

    简单AES类,实现AES加密/解密,需要pycrypto支持.

    pycrypto-2.6.1

    PyCrypto模块有许多加密算法,可以对传输的信息进行加密使用python语言对数据进行加密、解密。包括DES、DES3、AES、RSA等等

    python实现无证书加密解密实例

    本文实例讲述了python实现无证书加密解密的方法,分享给大家供大家参考。具体实现方法如下: 无证书加密就是双方不需要维护证书,加密与解密只需要双方约定一个key就可以,无证书加解密的方式应用更广泛一些,python...

    AES-CBC-PKCS7Padding-:AESCBCPKCS7Padding加密的实现

    常会要到加密算法AES(Advanced Encryption Standard),下面是Python和PHP的实现。Python需要安Crypto库(pip install pycrypto或访问)PHP需要安装mcrypt扩展说明加密模式采用AES/CBC/PKCS7Padding注意:加密后的字节...

    Python使用Pycrypto库进行RSA加密的方法详解

    密码技术的用途主要源于两个方面,加密/解密和签名/验签 在信息传播中,通常有发送者,接受者和窃听者三个角色。假设发送者Master想要写信给接受者Ghost,可是又不想信的内容被别人看到,因此Master需要先对信加密,...

    cnox:Python AES 文件加密

    诺克斯Python AES 文件加密。 使用 PyCrypto 工具包进行文件加密/解密的简单脚本。... 可选参数: -e, --encrypt 加密文件-d, --decrypt 解密文件-f, --file 要加密/解密的文件-p, --path 批量加密的路径和目录名

    Python实现对字符串的加密解密方法示例

    本文实例讲述了Python实现对字符串的加密解密方法。分享给大家供大家参考,具体如下: 需求是是要将密码存在数据库里,所以要加密解密是可逆的,在数据库里不要有特殊字符,防止数据库备份和恢复中出错。 安装...

    safelock:基本的AES文件加密工具-开源

    简单的拖放文件加密工具。 基于python并使用PyCrypto使用AES加密对输入的文件进行加密。 然后生成带有唯一密钥的 sqlite 数据库文件,以将加密的文件和文件夹存储在二进制 blob 中,以便以后解密。

    FaceID-Security-Encryption:使用FaceID作为安全保护您的文件和文件夹。 该Python程序使用人脸识别技术对文件进行加密和解密

    该程序使用FaceRecognition库和AES加密技术来完成这两项工作。 只能使用您的FaceID访问该文件。 这个怎么运作? 运行Face.py 会要求您首次输入两步验证密码(注册您的密码) 关闭程序运行Face.py,它将检测到您的脸...

    ISIM-Crypto-Seer:IBM Security Identity Manager的解密工具

    IBM Security Identity Manager加密和解密工具如果您需要恢复加密的ISIM密码或使用其他密钥对其进行重新加密,这就是您需要的工具集。 另外,您拥有一个用于解密ISIM适配器发行版的工具(以防您不想浪费时间与IBM...

    Hybrid-Cryptography

    非对称加密(和解密)使用 RSA 算法,对称加密(以及解密)在 CFB 模式下使用 AES。 有关该主题的更多信息,您可以查看 LaTeX 文件夹中的 PDF(尽管它是葡萄牙语)。 这些程序是用Python 2.7编写的,需要 PyCrypto...

    cryptopuck:一种手持式小工具,可以动态加密您的驱动器

    该概念基于Cryptopuck无法解密文件,并且用户可以声称自己无法解密文件。 这是因为可以存储文件的私钥无法存储,无法远程存储。 因此,它可能不会受到可能对加密文件进行加密的Cryptopuck设备的犯罪者的破坏。 但是...

    NetUSB-exploit

    NetUSB客户端和服务器之间相互身份验证的对称加密/解密密钥。 AESKey = "\x5c\x13\x0b\x59\xd2\x62\x42\x64\x9e\xd4\x88\x38\x2d\x5e\xae\xcc" 使用WinDbg调试NetgearUDSTcpBus.sys驱动程序 bu NetgearUDSTcpBus+...

Global site tag (gtag.js) - Google Analytics