您的位置:首页 > python教程python教程

“python aes“Python进行 AES CBC-128bit PKCS7

python aes教程2020-09-16 14:53:41人已围观

求大神,通过python脚本进行AES解密
这个不会呀。一般好像都用openssl解密。知道密码(可能还有椒盐密码)的情况下,按照指定模式解密。python的话,可能要绑定openssl来处理
python 中 crypto 的aes加密怎么使用
在刚开始知道这个模块的时连基本的Crypto模块的都花了很多很多时间来搞不知道什么情况反正是折腾很久了才安装起的,记得是包安装起来了,但使用的时候始终提示找不到Crypto.Cipher模块。然后怎么解决的呢?
一、把我的python换成了64位的,本来电脑就是64位的也不知道之前是啥情况安装成32位的了。(O(∩_∩)O哈哈~)
二、安装了VCForPython27.msi
三、在cmd中执行:
pip install pycrypto -i http://mirrors.aliyun.com/pypi/simple/1

经过上边儿的几个步骤,我是能够成功执行
from Crypto.Cipher import AES1

现在上一个实例代码:
# !/usr/bin/env python
# coding: utf-8
'''

'''

from Crypto.Cipher import AES
from binascii import b2a_hex, a2b_hex

class MyCrypt():
def __init__(self, key):
self.key = key
self.mode = AES.MODE_CBC

def myencrypt(self, text):
length = 16
count = len(text)
print count
if count < length:
add = length - count
text= text ('\0' * add)

elif count > length:
add = (length -(count % length))
text= text ('\0' * add)

# print len(text)
cryptor = AES.new(self.key, self.mode, b'0000000000000000')
self.ciphertext = cryptor.encrypt(text)
return b2a_hex(self.ciphertext)

def mydecrypt(self, text):
cryptor = AES.new(self.key, self.mode, b'0000000000000000')
plain_text = cryptor.decrypt(a2b_hex(text))
return plain_text.rstrip('\0')

if __name__ == '__main__':
mycrypt = MyCrypt('abcdefghjklmnopq')
e = mycrypt.myencrypt('hello,world!')
d = mycrypt.mydecrypt(e)
print e
print d
12345678910111213141516171819202122232425262728293031323334353637383940414243

在cmd中执行结果:
如何使用Python进行Rijndael方式的加密解密
Rijndael,在加密标准(AES)中使用的基本密码算   
     (美国)国家标准技术所(NIST)选择Rijndael作为美国政府加密标准(AES)的加密算法,AES取代早期的数据加密标准(DES)。Rijndael由比利时计算机科学家Vincent Rijmen和Joan Daemen开发,它可以使用128位,192位或者256位的密钥长度,使得它比56位的DES更健壮可靠。Rijndael也有一个非常小的版本(52位),合适用在蜂窝电话、个人数字处理器(PDA)和其他的小设备上。
  近似读音:Rijn [rain] dael [del] (莱恩戴尔)   Rijn 来源 Rhine [莱茵河]的荷兰语(Dutch)发音。
  dael 是常用的人名 这词是两个科学家的名字各出一段拼成的。
  Rijndael.h
  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  #pragma once
  #include
  #include
  using namespace std;
  class CRijndael
  {
  public:
  enum { ECB=0, CBC=1, CFB=2 };
  private:
  enum { DEFAULT_BLOCK_SIZE=16 };
  enum { MAX_BLOCK_SIZE=32, MAX_ROUNDS=14, MAX_KC=8, MAX_BC=8 };
  
  static int Mul(int a, int b)
  {
  return (a != 0

很赞哦! ()