juechafun/05-原子化笔记本/Linux-openssl加密解密.md

3.2 KiB
Raw Blame History


#领域/Linux

#复盘/1

一句话描述

[openssl AES-256-CBC加密解密]


核心规范

空想不如行动,积累胜于苛求。 实践 > 沉淀 > 完美主义

实践不是盲目行动,而是带着“小目标、可验证“的方向试错,实践后必须沉淀(比如记录问题、总结规律),否则就是低水平重复。

实践大于沉淀,沉淀大于完美;完美是沉淀的终局方向,沉淀是实践的复盘产物;分域施策,避坑落地,始于行动,终于迭代。


三省沉淀法

  • 达成了[文件加密解密______]目标
  • 遇到了[命令频繁输入、加密算法繁多____]问题
  • 下次改进[将常用加解密封装为脚本,先主要采用一种算法______]

个人理解

[对文件进行加解密______]

实践计划

#状态/待实践

  1. [编写加解密脚本____]
  2. [________]
  3. [________]

核心定义

openssl AES-256-CBC 对称加密,加解密用同一个密码 文件加密主流(速度快、适合大文件/多文件)256位密钥几乎无法暴力破解

参数 作用
-aes-256-cbc 指定加密算法
-e 解密模式
-d 加密模式
-salt 加盐加密(让相同密码生成不同的密文,提升安全性)
-pbkdf2 密钥派生算法普通密码转为高强度密钥openssl推荐
-pass pass:密码 直接指定明文密码
-in 文件名 指定输入文件
-out 文件名 指定输出文件
加密时加了 -pbkdf2 和 -salt解密时必须加 -pbkdf2无需加 -salt

示例

批量压缩加密

# tar czvf - 中的 - 会输出到管道
tar czvf - maixapp-cache/ | openssl enc -aes-256-cbc -salt -pbkdf2 -pass pass:123456 -out out.tar.gz.enc

批量解压解密

# tar czvf - 中的 - 会输出到管道
openssl enc -d -aes-256-cbc -in out.tar.gz.enc -pbkdf2 -pass pass:123456 | tar zxvf -

避坑点

⚠️ 避坑点1解密时 tar 参数不匹配,导致解密失败/文件损坏 解决方案:加解密之前明确一下 tar 解压缩是否正常

⚠️ 避坑点2加密时忘加 -salt导致密码安全性较低 解决方案:加密必加-salt解密无需加

进阶

机密后校验文件完整性

# 加密后生成校验值
md5sum out.tar.gz.enc > output.tar.gz.enc.md5
# 解密前校验(无输出则校验通过,有输出则文件损坏)
md5sum -c out.tar.gz.enc.md5

大文件加解密后台执行

nohup tar czvf - test.dat | openssl enc -aes-256-cbc -salt -pbkdf2 -out out.tar.gz.enc > encrypt.log 2>&1 &

ps -ef | grep openssl

编写自动化脚本,避免重复输命令


#!/bin/bash

if [ $1 = "encrypt" ]; then
    加密命令
    tar ... $2 | open ... -pass pass:$3 -out $4
elif [ $1 = "decrypt" ]; then
    解密命令
    openssl ... -in $2 ...
else
    使用说明: ./run.sh [encrypt/decrypt] 目标 密码 加密文件
chmod +x run.sh
./run ...