openssl 實現 aes 檔案加密解密

2021-09-26 03:55:23 字數 2295 閱讀 5881

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

docase

$opt

in k)

key=

$optarg

echo

"引數 k - key 的值: $optarg";;

v)iv=

$optarg

echo

"引數 v - iv 的值: $optarg";;

i)in_file=

$optarg

echo

"引數 i - in 的值: $optarg";;

o)out_file=

$optarg

echo

"引數 o - out 的值: $optarg";;

?)echo

"未知引數"

exit 1;

; esac

done

echo

""echo

"in_file = $"

echo

"out_file = $"

echo

"key = $"

echo

"iv = $"

# 建立 python 檔案,把字串轉換為 hex 值

echo

"import sys

import os

in_msg = sys.ar**[1]

in_msg_len = len(in_msg)

# print '[ %s ] %s' % (in_msg_len, in_msg)

out_hex_list = [hex(ord(x)) for x in in_msg]

# popen remove hex_list

cmd_list = os.popen('echo \"%s\" | sed \"s/0x//g\" | sed \"s/[, \']//g\" | sed \"s/\[//g\" | sed \"s/\]//g\"' % (out_hex_list)).readlines()

# print 'cmd_list = %s' % (cmd_list)

# get first line

cmd_line = cmd_list[0]

# print 'cmd_line = %s' % (cmd_line)

# remove '\ n'

out_hex = cmd_line[0:len(cmd_line)-1]

# print 'out hex : %s' % out_hex

print out_hex

">

$# 字串轉為 hex

key_hex=

`python $ $

`iv_hex=

`python $ $

`echo

"key_hex = $"

echo

"iv_hex = $"

# 刪除 python 檔案rm$

## 加密

echo

"\n\topenssl enc -aes-128-cbc -k $ -iv $ -in $ -out $\n\n"

`openssl enc -aes-128-cbc -k $ -iv $ -in $ -out $

`

執行命令如下:

./zone_aes_tool.sh -k 0123456789abcdef -v 0123456789abcdef \

-i mxnet_liveness_141_model_symbol.json \

-o encrypt_mxnet_liveness_141_model_symbol

其中:

-k:輸入 16 個 ascii 字元作為金鑰

-v:輸入 16 個 ascii 字元作為向量(aes,cbc,pkcs5padding 需要)

-i:輸入需要加密的檔名

-o:輸出加密後的生成的檔名

openSSL實現AES加密

openssl是很常見的c介面的庫,個人覺得易用。以下是aescbc cfb ecb加密方式的用法都是類似的,只是函式名有點區別,就不一一枚舉了。一 介面簡介 設定加密金鑰,使用字元緩衝區 intaes set encrypt key const unsigned char userkey,cons...

PHP使用OpenSSL實現AES加密的筆記

記錄這兩天遇到的一些問題,一開始主要是對一些概念理解的不清楚 比如aes是一種演算法,而openssl是乙個擴充套件庫,其中包含對aes演算法的實現 當然在完全理解演算法後可以自己實現,但可能會遇到很多問題,我會在以後進行嘗試 目前在專案的使用中,還是使用擴充套件庫的方法最快最簡單 1,加密方法 通...

AES實現大檔案分塊加秘和解秘

搞了三天嘗試了n多方法之後終於搞定,如下 using system using system.text using system.collections using system.componentmodel using system.data using system.net using syst...