70sh1/eddy

GitHub: 70sh1/eddy

一款简洁快速的跨平台 CLI 文件加密工具,基于 ChaCha20 和 BLAKE2b 提供并发加密与数据认证。

Stars: 54 | Forks: 3

eddy :tornado:

Go version Go code report card Tests status License: MIT

demo

_eddy_ 是一个简单且快速的 CLI 文件加密工具。它支持并发文件处理,同时确保数据真实性和合理否认性。 ### 功能 - 易于使用。 - 跨平台。 - 支持 Glob 模式(通配符)。 - 并发文件处理。每个文件都在其独立的线程(goroutine)中处理。 - 在解密时通过 BLAKE2b MAC 标签保证内容的真实性。 - 合理否认性。加密文件无法与随机生成的文件区分开来。 - 安全的[密码短语生成](#passphrase-generation)(使用 `-g` 标志或独立的 `generate` 命令)。 ### 命令 `encrypt`, `enc`, `e` - 加密提供的文件。 `decrypt`, `dec`, `d` - 解密提供的文件。 `generate`, `gen`, `g` - 生成密码短语。 ### 标志 `--output, -o` - 指定输出目录。 `--passgenlen, -g` - 指定生成的密码短语长度(最低为 6)。在解密模式下被忽略。 `--overwrite, -w` - 启用覆盖现有文件。 `--no-emoji, -n` - 在输出中禁用表情符号和颜色。 `--force` - 强制解密。绕过文件身份验证以及固有的密码检查。如果加密文件已损坏,但您仍想对其进行解密,此选项会很有用。 `--unsafe-password` - 使用提供的值替换交互式密码提示。适用于脚本/自动化以及从环境变量读取密码。此处的“unsafe”前缀旨在表明,提供的值可能会留在 shell 命令历史记录中,这是不安全的。 ### 示例 ``` # 加密文本文件 eddy e secret.txt # 并行加密多个文件 eddy e secret.txt secret2.png secret3.mp4 # 使用随机 8 词 passphrase 加密文本文件 eddy -g 8 enc secret.txt # 加密并覆盖输出文件(此例中为 'secret.txt.eddy') eddy --overwrite encrypt secret.txt # 解密文件并将其放入 Documents 文件夹 eddy -wo ./Documents dec secret.txt.eddy # 加密两个文件并将它们放入当前文件夹 # 使用密码 'supeR-$ecr3t' # 输出中不使用任何颜色或 emojis eddy --unsafe-password "supeR-$ecr3t" --no-emoji -o . enc "D:/stuff/secret.txt" secret2.txt # 解密每个以 'backup' 开头的文件 eddy d ./backup* # 生成 10 词 passphrase 而不进行任何 en/decryption eddy gen 10 ``` ## 安装 提供了以下安装选项: #### 预构建二进制文件(releases) 提供适用于 **Windows、Linux 和 macOS(包括 x86 和 ARM)** 的预构建二进制文件:从 [releases](https://github.com/70sh1/eddy/releases) 页面下载所需操作系统的最新版本。 #### 通过 Go 如果您已安装 [Go](https://go.dev/dl/),获取 _eddy_ 最简单的方法是运行: ``` go install github.com/70sh1/eddy@latest ``` #### Scoop _eddy_ 作为 [70sh1 的 scoop bucket](https://github.com/70sh1/jug) 的一部分提供。要进行安装,您首先需要添加该 bucket: ``` scoop bucket add jug https://github.com/70sh1/jug ``` 之后,运行: ``` scoop install eddy ``` 或者,如果您不想添加 bucket,可以运行以下命令: ``` scoop install https://raw.githubusercontent.com/70sh1/jug/refs/heads/master/bucket/eddy.json ``` #### Arch Linux _eddy_ 作为 [AUR 中的软件包](https://aur.archlinux.org/packages/eddy) 提供。您可以使用 AUR 助手(例如 `yay`)进行安装: ``` yay -S eddy ``` ## 密码短语生成 如果在加密期间未提供密码(即空密码,包括缺少 `--unsafe-password` 标志以及在交互式密码提示中留空),_eddy_ 将生成并使用一个安全的密码短语(默认长度为 6 个单词)。可以使用 `--passgenlen (-g)` 标志调整长度。此外,如果提供了 `-g` 标志,密码提示将自动跳过。该密码短语是使用操作系统提供的加密安全 PRNG 和 EFF 的长词列表生成的。`generate` 命令也可用于独立生成。 您可以在[此处](https://www.eff.org/dice)阅读有关密码短语的更多信息。 ## 此工具不能做什么 - _eddy_ 不会删除输入文件。 - _eddy_ 不保留文件时间戳(创建日期和修改日期)。 - _eddy_ 不使用任何方法来提高文件的弹性,例如纠错码。因此,建议定期备份重要文件。 ## 提示与注意事项 - 最大文件大小为 **256 GiB**。 - 重命名任何使用 _eddy_ 加密的文件都是安全的。这意味着解密不要求文件名中包含 `.eddy`。 ## 工作原理 _eddy_ 利用 `ChaCha20` 进行加密,并结合带密钥的 `BLAKE2b` 进行数据身份验证(MAC)。`scrypt` KDF 用于生成密钥。您可以在[规范文件](https://github.com/70sh1/eddy/blob/main/SPEC.md)中阅读有关其内部原理的更多信息。 ## 致谢 [urfave/cli](https://github.com/urfave/cli) - CLI 框架。 [cheggaaa/pb](https://github.com/cheggaaa/pb) - 进度条。
标签:BLAKE2b, Cybersecurity, DNS 反向解析, EVTX分析, Goroutine, Go语言, HTTP 参数枚举, ProjectDiscovery, StruQ, 加密算法, 加密解密, 可否认加密, 安全, 密码生成, 开源, 数据保护, 数据真实性, 文件加密, 文件处理, 日志审计, 程序破解, 超时处理