qrichert/jolokia
GitHub: qrichert/jolokia
一款简洁易用的 Rust 命令行加密工具,提供 ChaCha20-Poly1305 等现代加密算法,支持对文本和文件进行快速加解密。
Stars: 0 | Forks: 0
# jolokia


[](https://crates.io/crates/jolokia)
[](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, 加密解密, 可视化界面, 密码学, 手动系统调用, 网络流量审计, 通知系统