python 实现aes加密解密 ecb模式和其他模式

ecb模式:(这种不需要偏移向量iv,安全性较低,代码出处忘了)

# -*- coding=utf-8-*-
from Crypto.Cipher import AES
import os
from Crypto import Random
import base64
from Crypto.Cipher import AES
from binascii import b2a_hex, a2b_hex

"""
aes加密算法
ECB模式
"""

def add_to_16(text):
    if len(text.encode(‘utf-8‘))%16:
        add = 16 - len(text.encode(‘utf-8‘)) % 16
    else:
        add = 0
    text = text + ("\0"*add)
    return text.encode(‘utf-8‘)

def encrypt(text):
    key = "1234567890123456".encode(‘utf-8‘)
    mode = AES.MODE_ECB
    text = add_to_16(text)
    cryptos = AES.new(key, mode)
    cipher_text = cryptos.encrypt(text)
    return b2a_hex(cipher_text)

def decrypto(text):
    key = "1234567890123456".encode(‘utf-8‘)
    mode = AES.MODE_ECB
    cryptor = AES.new(key,mode)
    plain_text = cryptor.decrypt(a2b_hex(text))
    return bytes.decode(plain_text).rstrip(‘\0‘)

text = open(r‘xxxxxx‘, ‘r‘, encoding=‘utf-8‘).read()
print(text[:100])
d = decrypto(text)
f = open(‘xxxxxxxxx1‘, ‘w+‘)
f.write(d)
f.close()

其他模式:参考百度,没有测试。

https://www.jianshu.com/p/d18c13681bbc

原文地址:https://www.cnblogs.com/donke/p/12129227.html

时间: 2024-08-29 20:00:55

python 实现aes加密解密 ecb模式和其他模式的相关文章

python实现aes加密解密

引子: 在windows中python3使用  pycryptodemo 模块实现Aes加密解密.Aes加密有多种方式,自己可以上网了解下. AES是每16位一加密,并且保证key和vi都是16位的.废话不多说直接上代码. import base64 from Crypto.Cipher import AES from binascii import b2a_hex,a2b_hex class PrpCrypt(object): def __init__(self,key,iv): self.k

AES加密解密 助手类 CBC加密模式

string str = "2018"; string result1 = AESHelper.AesEncrypt(str); string result2 = AESHelper.AesDecrypt(result1); namespace Demo { /// <summary> /// AES加密解密 助手类 /// CBC加密模式 /// </summary> public class AESHelper { /// <summary> /

java使用AES加密解密 AES-128-ECB加密

http://www.cnblogs.com/chen-lhx/p/5817161.html ************************************************* import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Base64; /** * * @author Administrator * */ pub

ruby AES加密解密

最近和京东合作做一个项目,在接口对接传递参数时,参数需要通过AES加密解密. 本来想到用gem 'aescrypt'处理,但是aescrypt的编码方式用的base64,而京东那边用的是16进制.所以就自己写了加密解密方法. AES 加密 def aes_encrypt(key, encrypted_string) aes = OpenSSL::Cipher::Cipher.new("AES-128-ECB") aes.encrypt aes.key = key txt = aes.u

Aes 加密解密 java加密解密

使用AES加密解密代码详解 首先,如果是使用nodejs + vue 写的前端, 那么你需要npm 加载一个js文件 npm i crypto-js --save --save-exact npm install crypto-js java代码加密解密类 package com.telling.util.crypto; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import org.apache.co

php与java通用AES加密解密算法

php与java通用AES加密解密算法 AES指高级加密标准(Advanced Encryption Standard),是当前最流行的一种密码算法,在web应用开发,特别是对外提供接口时经常会用到,下面是我整理的一套php与java通用的AES加密解密算法. php版代码如下: <?php class CryptAES { protected $cipher = MCRYPT_RIJNDAEL_128; protected $mode = MCRYPT_MODE_ECB; protected

C# AES加密解密

完整代码: /****************************************************************** * 创建人:HTL * 创建时间:2015-04-17 17:36:35 * 说明:C# AES加密解密 * Email:[email protected] *******************************************************************//* using System; using System

C# 实现 JAVA AES加密解密[原创]

以下是网上普遍能收到的JAVA AES加密解密方法. 因为里面用到了KeyGenerator 和 SecureRandom,但是.NET 里面没有这2个类.无法使用安全随机数生成KEY. 我们在接收JAVA发送的AES加密字符串后,在.NET没有对应的KeyGenerator 和 SecureRandom去生成AES 的 KEY值,导致无法直接解密. 1 import java.security.SecureRandom; 2 import java.util.Base64; 3 4 impor

AES加密解密代码

package com.huizhuyun.jeemis.api.openAPI.service; import org.slf4j.Logger;import org.slf4j.LoggerFactory;import javax.crypto.Cipher;import javax.crypto.spec.IvParameterSpec;import javax.crypto.spec.SecretKeySpec; import java.util.Base64;import java.u