Skip to content
← 返回文件与文本处理列表
文件与文本处理任务与配置

命令与脚本:账号、权限与加密 · 生成口令与计算校验摘要至签名与校验发布产物 ​

返回分篇目录

命令与脚本:账号、权限与加密 ​

生成口令与计算校验摘要 ​

需要口令时看 pwgen/apg;需要文件摘要时看 shasum/md5sum。摘要不提供加密或来源认证;MD5 不适合防恶意篡改,见 GNU 摘要说明。

pwgen · 生成可拼写发音的密码 ​

更多信息:https://manned.org/pwgen。

  • 生成指定长度的随机密码:
bash
pwgen -y {{长度}}
  • 生成安全、难以记忆的密码:
bash
pwgen -s {{长度}}
  • 生成至少包含一个大写字母的密码:
bash
pwgen -c {{长度}}

apg · 生成任意复杂度的随机密码 ​

更多信息:https://manned.org/apg。

  • 生成随机密码(默认密码长度为 8 位):
bash
apg
  • 生成密码,包含至少 1 个符号 (S), 1 个数字 (N), 1 个大写字母 (C), 1 个小写字母 (L):
bash
apg -M SNCL
  • 生成 16 个字符的密码:
bash
apg -m 16
  • 生成最大长度为 16 位的密码:
bash
apg -x 16
  • 生成未出现在字典中的密码(必须提供字典文件):
bash
apg -r {{路径/到/字典文件}}

shasum · 计算或检查 SHA 消息摘要 ​

更多信息:https://manned.org/shasum。

  • 计算一个或多个文件的 SHA1 校验值:
bash
shasum {{路径/到/文件1 路径/到/文件2 ...}}
  • 使用指定算法计算一个或多个文件的 SHA 校验值:
bash
shasum --algorithm {{1|224|256|384|512|512224|512256}} {{路径/到/文件1 路径/到/文件2 ...}}
  • 从标准输入中获取并计算 SHA1 校验值:
bash
{{命令}} | shasum
  • 计算并保存 SHA256 校验值列表到文件:
bash
shasum --algorithm 256 {{路径/到/文件1 路径/到/文件2 ...}} > {{路径/到/文件.sha256}}
  • 读取包含 SHA 校验值和文件名的文件,并验证所有文件是否具有匹配的校验值(算法将被自动检测):
bash
shasum {{[-c|--check]}} {{路径/到/文件}}
  • 仅显示缺失文件或验证失败的消息:
bash
shasum {{[-c|--check]}} --quiet {{路径/到/文件}}
  • 仅显示验证失败的消息,忽略缺失的文件:
bash
shasum --ignore-missing {{[-c|--check]}} --quiet {{路径/到/文件}}
  • 检查文件的已知 SHA 校验值:
bash
echo '{{文件的已知 sha 校验值}}  {{路径/到/文件}}' | shasum {{[-c|--check]}}

md5sum · 计算或检查 MD5 摘要 ​

更多信息:https://www.gnu.org/software/coreutils/manual/html_node/md5sum-invocation.html。

  • 计算一个或多个文件的 MD5 校验和:
bash
md5sum {{路径/到/文件1 路径/到/文件2 ...}}
  • 计算并将 MD5 校验和列表保存到一个文件中:
bash
md5sum {{路径/到/文件1 路径/到/文件2 ...}} > {{路径/到/文件.md5}}
  • 从 stdin 计算 MD5 校验和:
bash
{{命令}} | md5sum
  • 读取包含 MD5 校验和和文件名的文件,并验证所有文件的校验和是否匹配:
bash
md5sum {{[-c|--check]}} {{路径/到/文件.md5}}
  • 仅在文件丢失或验证失败时显示消息:
bash
md5sum {{[-c|--check]}} --quiet {{路径/到/文件.md5}}
  • 仅在验证失败时显示消息,忽略丢失的文件:
bash
md5sum --ignore-missing {{[-c|--check]}} --quiet {{路径/到/文件.md5}}
  • 检查已知文件的 MD5 校验和:
bash
echo {{已知的文件的_md5_校验和}} {{路径/到/文件}} | md5sum {{[-c|--check]}}

生成密钥并加密、解密文件 ​

age 先生成密钥再处理文件;GPG 同时包含密钥和加密操作。无线捕获文件的解密保留在 airdecap-ng。

age-keygen · 生成 age 密钥对 ​

另请参阅:age, age-inspect。 更多信息:https://manned.org/age-keygen。

  • 生成密钥对,将其保存到未加密文件,并将公钥打印到标准输出:
bash
age-keygen {{[-o|--output]}} {{路径/到/文件}}
  • 将身份转换为接收者,并将公钥打印到标准输出:
bash
age-keygen -y {{路径/到/文件}}

age · 一个简单、现代、安全的文件加密工具 ​

另请参阅:age-keygen, age-inspect。 更多信息:https://github.com/FiloSottile/age#usage。

  • 生成一个可以用密码短语(passphrase)解密的加密文件:
bash
age {{[-p|--passphrase]}} {{[-o|--output]}} {{路径/到/已加密文件}} {{路径/到/未加密文件}}
  • 用一个或多个公钥加密一个文件,这些公钥以字面形式输入:
bash
age {{[-r|--recipient]}} {{公钥}} {{[-o|--output]}} {{路径/到/已加密文件}} {{路径/到/未加密文件}}
  • 用收件人文件中指定的一个或多个公钥来加密一个文件:
bash
age {{[-R|--recipients-file]}} {{路径/到/收件人文件}} {{[-o|--output]}} {{路径/到/已加密文件}} {{路径/到/未加密文件}}
  • 用密码短语解密一个文件:
bash
age {{[-d|--decrypt]}} {{[-o|--output]}} {{路径/到/已解密文件}} {{路径/到/已加密文件}}
  • 用私钥文件解密一个文件:
bash
age {{[-d|--decrypt]}} {{[-i|--identity]}} {{路径/到/私钥文件}} {{[-o|--output]}} {{路径/到/已解密文件}} {{路径/到/已加密文件}}

gpg · GNU Privacy Guard ​

另请参阅:sq。 更多信息:https://gnupg.org/documentation/manuals/gnupg/Invoking-GPG.html。

  • 交互地创建 GPG 公钥和私钥:
bash
gpg {{[--full-gen-key|--full-generate-key]}}
  • 不加密,仅对 doc.txt 进行签名(生成 doc.txt.asc,格式为 ASCII 码形式):
bash
gpg --clearsign {{doc.txt}}
bash
gpg {{[-es|--encrypt --sign]}} {{[-r|--recipient]}} {{alice@example.com}} {{[-r|--recipient]}} {{bob@example.com}} {{doc.txt}}
  • 只用密码加密 doc.txt(生成 doc.txt.gpg):
bash
gpg {{[-c|--symmetric]}} {{doc.txt}}
  • 解密 doc.txt.gpg(输出到标准输出):
bash
gpg {{[-d|--decrypt]}} {{doc.txt.gpg}}
  • 导入一个公钥:
bash
gpg --import {{public.gpg}}
bash
gpg --export {{[-a|--armor]}} {{alice@example.com}}
bash
gpg --export-secret-keys {{[-a|--armor]}} {{alice@example.com}}

airdecap-ng · 解密 WEP、WPA 或 WPA2 加密的捕获文件 ​

是 Aircrack-ng 网络软件套件的一部分。 更多信息:https://www.aircrack-ng.org/doku.php?id=airdecap-ng。

  • 从开放网络捕获文件中移除无线头,并使用接入点的 MAC 地址进行过滤:
bash
airdecap-ng -b {{ap_mac}} {{路径/到/捕获文件.cap}}
  • 使用十六进制格式的密钥解密 WEP 加密的捕获文件:
bash
airdecap-ng -w {{hex_key}} {{路径/到/捕获文件.cap}}
  • 使用接入点的 ESSID 和密码解密 WPA/WPA2 加密的捕获文件:
bash
airdecap-ng -e {{essid}} -p {{密码}} {{路径/到/捕获文件.cap}}
  • 使用接入点的 ESSID 和密码解密 WPA/WPA2 加密的捕获文件,并保留头部信息:
bash
airdecap-ng -l -e {{essid}} -p {{密码}} {{路径/到/捕获文件.cap}}
  • 使用接入点的 MAC 地址进行过滤,并使用接入点的 ESSID 和密码解密 WPA/WPA2 加密的捕获文件:
bash
airdecap-ng -b {{ap_mac}} -e {{essid}} -p {{密码}} {{路径/到/捕获文件.cap}}

签名与校验发布产物 ​

GPG 签名验证、容器及文件签名、Java 归档签名分别查阅 gpgv、cosign、jarsigner。

gpgv · 验证 OpenPGP 签名 ​

另请参阅:gpg。 更多信息:https://www.gnupg.org/documentation/manuals/gnupg/gpgv.html。

  • 验证签名文件:
bash
gpgv {{path/to/file}}
  • 使用分离式签名验证已签名的文件:
bash
gpgv {{path/to/signature}} {{path/to/file}}
  • 在 keyrings 列表中添加一个文件(一个导出的钥匙也算作一个 keyring):
bash
gpgv --keyring {{path/to/keyring_file}} {{path/to/signature}} {{path/to/file}}

cosign · 在 OCI 注册表中对容器进行签名、验证和存储 ​

更多信息:https://github.com/sigstore/cosign/blob/main/doc/cosign.md。

  • 生成密钥对:
bash
cosign generate-key-pair
  • 对容器进行签名,并将签名存储在注册表中:
bash
cosign sign --key {{cosign.key}} {{镜像}}
  • 使用存储在 Kubernetes Secret 中的密钥对容器镜像进行签名:
bash
cosign sign --key k8s://{{命名空间}}/{{密钥}} {{镜像}}
  • 使用本地密钥对 blob 文件进行签名:
bash
cosign sign-blob --key {{cosign.key}} {{路径/到/文件}}
  • 使用公钥验证容器:
bash
cosign verify --key {{cosign.pub}} {{镜像}}
  • 使用 Dockerfile 中的公钥验证镜像:
bash
cosign dockerfile verify -key {{cosign.pub}} {{路径/到/Dockerfile}}
  • 使用存储在 Kubernetes Secret 中的公钥验证镜像:
bash
cosign verify --key k8s://{{命名空间}}/{{密钥}} {{镜像}}
  • 复制容器镜像及其签名:
bash
cosign copy {{example.com/src:latest}} {{example.com/dest:latest}}

jarsigner · 签名并验证 Java 存档(.jar)文件 ​

更多信息:https://docs.oracle.com/en/java/javase/25/docs/specs/man/jarsigner.html。

  • 签名一个 .jar 文件:
bash
jarsigner {{path/to/file.jar}} {{keystore_alias}}
  • 使用特定算法对 .jar 文件进行签名:
bash
jarsigner -sigalg {{algorithm}} {{path/to/file.jar}} {{keystore_alias}}
  • 验证 .jar 文件的签名:
bash
jarsigner -verify {{path/to/file.jar}}

继续阅读