AES 加密 解密 字串及檔案

2021-10-04 11:48:48 字數 1790 閱讀 1973

注意:

cbc模式中,加密或者解密物件不能被重複使用,即加密了乙個明文之後,不能再用此物件加密其他明文。

key必須為16或24或32個位元組長度。

明文位元組長度必須為16的倍數。

**:

import base64

from django.conf import settings

from utils.vault_util import vaultclient

from cryptodome.cipher import aes

class md5util(object):

@classmethod

def md5(cls, text, clen=none, salt=''):

import hashlib

m2 = hashlib.md5()

m2.update((text + salt).encode('utf-8'))

code = m2.hexdigest()

if clen is none:

return code

elif clen >= len(code):

return code

else:

return code[0:clen]

class aesutil(object):

def __init__(self):

self.key = md5util.md5('my_key_for_encrypt', 16).encode('utf-8')

self.model = aes.mode_cbc

self.iv = b'abcdefgh12345678' #密斯偏移量(iv)

self.e_aes = aes.new(self.key, self.model, self.iv)

self.d_esc = aes.new(self.key, self.model, self.iv)

@classmethod

def add_to_16(cls, b_value):

while len(b_value) % 16 != 0:

b_value += b' '

return b_value

def encrypt_str(self, text):

b_text = self.add_to_16(text.encode('utf-8'))

encrypt_text = self.e_aes.encrypt(b_text)

return base64.encodebytes(encrypt_text).decode('utf-8')

def decrypt_str(self, text):

b_text = base64.decodebytes(text.encode('utf-8'))

decrypt_text = self.d_esc.decrypt(b_text)

return decrypt_text.decode('utf-8').rstrip()

def encrypt_file(self, b_text):

b_text = self.add_to_16(b_text)

encrypt_text = self.e_aes.encrypt(b_text)

return encrypt_text

def decrypt_file(self, b_text):

decrypt_text = self.d_esc.decrypt(b_text)

return decrypt_text.rstrip()

字串加密解密

using system.security.cryptography using system.io 加密函式 static stirng encrypt string str descryptoserviceprovider descsp new descryptoserviceprovider ...

java AES加密解密檔案以及字串

搗鼓了兩個星期的加密解密資料夾,一開始是用異或,後來覺得太簡單換成了aes,結果一堆bug,上網查了很多,現在將這個最終的版本記錄下來。已經在android 5.1系統上測試過,是可以的。初始化 aes cipher param skey param ciphermode return public...

openssl 實現 aes 檔案加密解密

linux 環境 基礎 安裝 openssl 加密用 安裝 python 環境 換金鑰用 bin sh py file zone aes tool py key iv in file out file 獲取金鑰k,向量v,輸入檔案i,輸出檔案o while getopts k v i o opt d...