qrichert/jolokia

GitHub: qrichert/jolokia

一款简洁易用的 Rust 命令行加密工具,提供 ChaCha20-Poly1305 等现代加密算法,支持对文本和文件进行快速加解密。

Stars: 0 | Forks: 0

# jolokia ![Crates.io 许可证](https://img.shields.io/crates/l/jolokia) ![GitHub 标签](https://img.shields.io/github/v/tag/qrichert/jolokia?sort=semver&filter=*.*.*&label=release) [![crates.io](https://img.shields.io/crates/d/jolokia?logo=rust&logoColor=white&color=orange)](https://crates.io/crates/jolokia) [![GitHub Actions 工作流状态](https://img.shields.io/github/actions/workflow/status/qrichert/jolokia/ci.yml?label=tests)](https://github.com/qrichert/jolokia/actions) _简单、强大的加密。_ ## 示例 ``` $ jolokia keygen hNbaua5cGlUNsEp4HSUTSJG7gl5IURQiTvnABzhFW4w $ jolokia encrypt "hello, world!" --key hNbaua5cGlUNsEp4HSUTSJG7gl5IURQiTvnABzhFW4w Q0gyMAGnAk2xt/+cAAAAHYUv/WBO+VxMGHodIL0Qzjbtnv/LPpQd3CCcYW0kAAAAAA # 与传递 `--key` 相同。 $ export JOLOKIA_CIPHER_KEY=hNbaua5cGlUNsEp4HSUTSJG7gl5IURQiTvnABzhFW4w $ jolokia decrypt Q0gyMAGnAk2xt/+cAAAAHYUv/WBO+VxMGHodIL0Qzjbtnv/LPpQd3CCcYW0kAAAAAA hello, world! # 该密钥也可以存储在文件中。 $ jolokia decrypt --key /secrets/jolokia.key Q0gyMAGnAk2xt/+cAAAAHYUv/WBO+VxMGHodIL0Qzjbtnv/LPpQd3CCcYW0kAAAAAA hello, world! ``` ## 获取 `--help` ``` Simple, strong encryption. Usage: jolokia [] [] Commands: keygen Generate cipher key encrypt Encrypt plaintext decrypt Decrypt ciphertext Args: -a, --algorithm Cipher algorithm (default: ChaCha20-Poly1305) -k, --key Cipher key (base64) -r, --raw Handle message as raw binary -f, --file Read message from file -i, --in-place Write output to input file -o, --output Write output to file Options: -h, --help Show help message and exit -V, --version Show the version and exit ``` ### jolokia 有什么作用? jolokia 为大众提供强大、现代且难以误用的加密功能。 ### 算法 ChaCha20-Poly1305 是默认算法。名称不区分大小写,连字符是可选的。 | 名称 | 密钥大小 | 类型 | | ----------------- | ------------------- | ---------- | | ChaCha20-Poly1305 | 32 字节(256 位) | 对称 | | HPKE | 32 字节(256 位) | 非对称 | | ROT-n | 0..255(不安全) | 对称 | 接受的值: - ChaCha20-Poly1305:`chacha20poly1305`, `chacha20`, `chacha`, `cha20`, `cha` - HPKE:`hpke` - ROT-n:`rotn`, `rot` 例如: ``` $ jolokia encrypt "hello" $ jolokia encrypt "hello" -a chacha $ jolokia keygen --algorithm hpke $ jolokia decrypt "uryyb" -a rot --key 13 $ jolokia encrypt "hello" -a bf ``` ### 密钥 在 jolokia 中,密钥始终是 base64 编码的字节字符串。密钥的大小因所选算法而异。 要生成新密钥,请运行: ``` $ jolokia keygen hNbaua5cGlUNsEp4HSUTSJG7gl5IURQiTvnABzhFW4w ``` 要使用密钥,请将其作为 `--key` 或 `-k` 传递: ``` $ jolokia encrypt "foo" --key hNbaua5cGlUNsEp4HSUTSJG7gl5IURQiTvnABzhFW4w Q0gyMAGSwlWJdALzAAAAE448viN3l+rwa7W4RdkRI0V/VckAAAAA ``` 或者作为环境变量(但 `--key` 具有优先权): ``` $ export JOLOKIA_CIPHER_KEY=hNbaua5cGlUNsEp4HSUTSJG7gl5IURQiTvnABzhFW4w $ jolokia encrypt "foo" Q0gyMAGSwlWJdALzAAAAE448viN3l+rwa7W4RdkRI0V/VckAAAAA ``` 密钥也可以是包含密钥的文件的名称: ``` $ echo hNbaua5cGlUNsEp4HSUTSJG7gl5IURQiTvnABzhFW4w > /secrets/jolokia.key $ jolokia decrypt --key /secrets/jolokia.key Q0gyMAGSwlWJdALzAAAAE448viN3l+rwa7W4RdkRI0V/VckAAAAA foo ``` 要永久设置密钥,建议的解决方案是将环境变量指向一个文件: ``` $ echo hNbaua5cGlUNsEp4HSUTSJG7gl5IURQiTvnABzhFW4w > ~/.jolokia.key $ echo 'export JOLOKIA_CIPHER_KEY="$HOME/.jolokia.key"' >> ~/.bashrc ``` ### 消息 可以在命令行中传递消息: ``` $ jolokia encrypt "bar" Q0gyMAHPNRsLieAOAAAAE/ssTCh2zCm73t+aQf9aKNepgPkAAAAA ``` 或者从文件中传递: ``` $ jolokia encrypt --file bar.txt Q0gyMAHPNRsLieAOAAAAE/ssTCh2zCm73t+aQf9aKNepgPkAAAAA ``` 或者通过 `stdin` 传递(但命令行具有优先权): ``` $ cat bar.txt | jolokia encrypt Q0gyMAHPNRsLieAOAAAAE/ssTCh2zCm73t+aQf9aKNepgPkAAAAA ``` 根据定义,您可以对其进行往返操作: ``` $ jolokia encrypt "hello, world" -o encrypted.txt $ jolokia decrypt -f encrypted.txt hello, world ``` 您也可以就地加密或解密文件: ``` $ jolokia encrypt -f cat.gif --in-place $ jolokia decrypt -f cat.gif -i ``` ### Raw I/O 如果您不想要 base64 编码,可以传递 `--raw` 或 `-r` 标志。这对于那些不希望有 base64 约 33% 大小开销的较大文件来说很有意义。 ``` $ jolokia encrypt --raw "hello, world" > hello.enc $ cat hello.enc | jolokia decrypt --raw hello, world ``` Base64 是大多数用户最简单、最安全的选择。它使得复制粘贴和共享密文变得容易。仅当您清楚自己在做什么时才使用 `--raw`。 ### 压缩 BYOC(自带压缩)。jolokia 不提供内置压缩,但您可以自带: ``` $ gzip -c cat.gif | jolokia encrypt -r > out.enc $ jolokia decrypt -r -f out.enc | gunzip > cat.gif ``` 如果您需要压缩和加密多个文件或目录,请考虑将它们 `tar` 打包: ``` $ tar -czf - cat.gif more-gifs/ | jolokia encrypt -r > out.enc $ jolokia decrypt -r -f out.enc | tar -xzf - ``` 将压缩与 `--raw` 结合使用以获得尽可能小的文件大小是合理的。 ## 路线图 - [ ] 如果有多个算法,我们是否应该保留 `JOLOKIA_CIPHER_KEY` 作为默认值并支持专用环境变量: `JOLOKIA_CIPHER_KEY_CHACHA20POLY1305`?)。如果是这样,将 `JOLOKIA_CIPHER_KEY` 重命名为 `JOLOKIA_KEY`。 - [ ] 添加测试。测试覆盖率_尚可_。要达到 100%,目前缺少的是错误情况、边缘情况和假阴性(false negatives)的测试。 ## 安装 ### 直接安装 ``` $ wget https://github.com/qrichert/jolokia/releases/download/X.X.X/jolokia-X.X.X-xxx $ sudo install ./jolokia-* /usr/local/bin/jolokia ``` ### 手动构建 #### 系统级 ``` $ git clone https://github.com/qrichert/jolokia.git $ cd jolokia $ just build $ sudo just install ``` #### 通过 Cargo ``` cargo install jolokia cargo install --git https://github.com/qrichert/jolokia.git ```
标签:ChaCha20-Poly1305, Rust, 加密解密, 可视化界面, 密码学, 手动系统调用, 网络流量审计, 通知系统