#!/bin/bash
##############################################################################
# 脚本名称: aes_256_cbc_encrypt_decrypt.sh
# 脚本功能: 使用OpenSSL实现AES-256-CBC算法的字符串加解密
# 加密参数说明:
# - 密钥(key): 32字节的16进制字符串(AES-256要求密钥长度32字节)
# - 初始向量(iv): 16字节的16进制字符串(CBC模式要求IV长度16字节)
# - 模式: AES-256-CBC(分组加密模式)
# - 输出: Base64编码后的加密字符串
# 使用依赖: 需安装openssl工具(CentOS: yum install openssl -y)
##############################################################################
# ======================== 配置项 ========================
# 待加密的原始字符串(包含多个业务参数)
source_str="USER_INTENRALID=-1 MAC=9c2ea13ee931 USER_IP=168296450 USER_PORT=-1 IN_IP=-1 IN_PORT=-1 USER_ACCESSTIME=1579332881302 PACKETAGETYPE=DNS HOST=180.153.184.132 IMEI=-1 IMSI=-1 LONGITUDE=-1 LATITUDE=-1 CHANNEL=170000 PATH=LTE= COOKIE=LTE= REFERER=LTE= POSTDATA=djJzLWlvcy55dW50b25ndi5jb20="
# AES-256-CBC加密密钥(32字节16进制字符串,共64个16进制字符)
key="f86e92574eaf977469098a59553e2450bec9e4acb1db1a2e2fa35e21bb55dd89"
# 初始向量IV(16字节16进制字符串,共32个16进制字符)
iv="c18d8c0b6f5e54f64ac4a401497ea37f"
# ======================== AES-256-CBC加密 ========================
# openssl enc参数说明:
# -e: 加密模式
# -aes-256-cbc: 使用AES-256-CBC算法
# -a: 输出Base64编码(便于传输和存储)
# -K: 指定16进制格式的密钥(大写K,区别于小写k)
# -iv: 指定16进制格式的初始向量
# -nosalt: 不使用盐值(确保加解密结果固定)
encrypt_str=$(echo -n "${source_str}" | openssl enc -e -aes-256-cbc -a -K ${key} -iv ${iv} -nosalt)
echo -e "加密后的字符串(Base64):\n${encrypt_str}\n"
# ======================== AES-256-CBC解密 ========================
# 修复原脚本错误:解密需使用-d参数,且要移除原错误的-e参数
# openssl enc参数说明:
# -d: 解密模式(核心修复点)
# 其他参数与加密保持一致,确保加解密参数匹配
decrypt_str=$(echo -n "${encrypt_str}" | openssl enc -d -aes-256-cbc -a -K ${key} -iv ${iv} -nosalt)
echo -e "解密后的原始字符串:\n${decrypt_str}"
Categories:
系统运维