shell在安卓中的两种简单加密

#16进制加密


#!/bin/bash

echo_bold_red() {
  echo -e "\033[1m\033[31m$1\033[0m"
}
# 原始脚本的路径
ORIGINAL_SCRIPT_PATH="你的脚本地址/加密前.sh"

# 加密后新脚本的路径
ENCODED_SCRIPT_PATH="加密后的脚本地址/加密后.sh"

# 确保原始脚本存在
if [ ! -f "$ORIGINAL_SCRIPT_PATH" ]; then
    echo "原始脚本不存在: $ORIGINAL_SCRIPT_PATH"
    exit 1
fi

# 读取原始脚本内容
SCRIPT_CONTENT=$(cat "$ORIGINAL_SCRIPT_PATH")

# 初始化编码内容变量
ENCODED_CONTENT="$SCRIPT_CONTENT"

# 计算原始脚本大小
ORIGINAL_SIZE=$(echo -n "$SCRIPT_CONTENT" | wc -c | awk '{print $1/1024/1024}')
echo "原始脚本的大小为: ${ORIGINAL_SIZE} MB"

# 初始化大小阈值
MAX_SIZE_1MB=1
MAX_SIZE_2MB=2

# 初始化ENCODED_CONTENT
ENCODED_CONTENT="$SCRIPT_CONTENT"

# 计算达到1MB和2MB的编码层数
i=0
CONTINUE_ENCODING=1
while [ "$CONTINUE_ENCODING" -eq 1 ]; do
    i=$(expr $i + 1)
    echo "尝试第 ${i} 次编码"
    # 编码
    ENCODED_CONTENT=$(echo -n "$ENCODED_CONTENT" | xxd -p | tr -d '\n')
    # 计算编码后大小
    ENCODED_SIZE=$(echo -n "$ENCODED_CONTENT" | wc -c | awk '{print $1/1024/1024}')
    echo "编码$1次后的大小为: ${ENCODED_SIZE} MB"


# 检查是否达到1MB

if [ "$(echo "$ENCODED_SIZE >= $MAX_SIZE_1MB" | bc)" -eq 1 ] && [ "$MAX_SIZE_1MB" != "-1" ]; then
    echo_bold_red "达到1MB的编码层数为: $i"
    MAX_SIZE_1MB=-1
fi

# 检查是否超过2MB
if [ "$(echo "$ENCODED_SIZE >= $MAX_SIZE_2MB" | bc)" -eq 1 ]; then
    echo_bold_red "超过2MB的最小编码层数为: $i"
    break
fi
done

# 初始化ENCODED_CONTENT
ENCODED_CONTENT="$SCRIPT_CONTENT"

# 提示用户输入编码层数
echo -n "请输入您希望编码的层数(建议不要超过$i层): "
read ENCODING_LAYERS
if [ "$ENCODING_LAYERS" -le 0 ]; then
    echo "编码层数至少为1。"
    exit 1
fi

# 应用用户指定层数的十六进制编码
for i in $(seq 1 $ENCODING_LAYERS); do
    ENCODED_CONTENT=$(echo -n "$ENCODED_CONTENT" | xxd -p | tr -d '\n')
    
    CONTENT_SIZE=$(echo -n "$ENCODED_CONTENT" | wc -c | awk '{print $1/1024/1024}')
    echo "第 $i 层编码后的数据大小为: $CONTENT_SIZE MB"
    
    if [ "$(echo "$CONTENT_SIZE > 10" | bc)" -eq 1 ]; then
        echo "编码后的数据已超过10MB。请减少编码层数。"
        exit 1
    fi
done

# 在脚本最后显示加密后的大小(如果你需要)

ENCODED_SIZE=$(echo -n "$ENCODED_CONTENT" | wc -c | awk '{print $1/1024/1024}')
echo_bold_red "加密脚本最后的大小为: ${ENCODED_SIZE} MB"


# 创建新脚本并写入解码逻辑与编码内容
cat > "$ENCODED_SCRIPT_PATH" <

#base64加密


#!/bin/bash

# 原始脚本的路径
ORIGINAL_SCRIPT_PATH="你的脚本地址/加密前.sh"

# 加密后新脚本的路径
ENCODED_SCRIPT_PATH="加密后路径/加密后.sh"

# 确保原始脚本存在
if [ ! -f "$ORIGINAL_SCRIPT_PATH" ]; then
    echo "原始脚本不存在: $ORIGINAL_SCRIPT_PATH"
    exit 1
fi

# 读取原始脚本内容并开始编码过程
ENCODED_CONTENT=$(< "$ORIGINAL_SCRIPT_PATH")

# 执行20次Base64编码
for i in $(seq 1 20); do
    ENCODED_CONTENT=$(echo -n "$ENCODED_CONTENT" | base64)
    # 进度提示信息
    echo "编码层级 $i 完成"
done

# 创建一个新的脚本文件并写入解码逻辑与编码后内容
cat > "$ENCODED_SCRIPT_PATH" <

你可能感兴趣的:(bash)