它具有以下特点:
- 采用MIT协议发布,完全开源,完全免费
- 采用Go语言开发,安全、高效、易于部署
- 支持Linux、Windows、OSX、FreeBSD四大系统
- 使用RSA + AES双重加密,军队级别的文件加密技术
- 支持RSA 1024、2048、4096三种长度的密钥
- 支持AES 128、192、256三种长度的密钥
- 支持CFB、CTR、OFB三种迭代模式
- 公钥用于文件加密,可分享给他人加密文件
- 私钥用于文件解密,可解密他人加密的文件
- 加解密过程完全可分开,便于权限管理
适用场景
BitCrypt项目的初衷就是加密上传到Github公开库上的文件。因为我们没钱购买Github的私有库,但又有一些项目只希望内部人员才能访问。通过使用BitCrypt,可以先加密项目文件,然后再上传到Github公开库上。虽然项目是公开的,但只有内部人员才能解密文件,这样就确保了公开项目的私有性。
类似于我们的情况,BitCrypt适用于以下场景:
- 本地计算机中的重要文件
- 云端存储服务的重要文件
- 发送给其他人的重要文件
- Github公开库加密变私有库
目前国内外知名IT企业都有提供免费的云端存储服务,如国内的百度云盘、国外的谷歌网盘等等。自斯诺登事件曝光后,政府机构对个人隐私的严密监控才暴露出冰山一角。因此,对于个人重要的、敏感的、隐私的文件,记得一定要先加密再上传到云端。
安装步骤
BitCrypt采用Go语言开发,请在安装本软件前确保已经装好了Go语言开发环境。详情可参考:Install the Go tools
本地安装
1
| go get -u github.com/st2py/bitcrypt
|
跨平台编译
Go语言具有强大的跨平台编译能力:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | git clone https://github.com/st2py/bitcrypt.git cd bitcrypt OS="linux darwin freebsd windows" ARCH="386 amd64" for GOOS in $OS do for GOARCH in $ARCH do echo Building bitcrypt for $GOOS $GOARCH go build -o $GOOS-$GOARCH-bitcrypt *.go done done GOOS=linux GOARCH=arm echo Building bitcrypt for $GOOS $GOARCH go build -o $GOOS-$GOARCH-bitcrypt *.go |
简明教程
查看帮助
1
| bitcrypt -h
|
生成密钥对
1 2 3 4 5 | # -g 生成密钥 -b 指定密钥长度,可选值为1024,2048,4096 # bitcrypt -g -b 2048 # -p 指定密钥保存的目录 # bitcrypt -g -b 2048 -p some/directory |
BitCrypt会生成public.pem和private.pem两个文件,前者是公钥,后者是私钥。
注意:请妥善备份好这两个文件,丢失密钥对会导致之前加密的文件无法被解密!
注意:请妥善备份好这两个文件,丢失密钥对会导致之前加密的文件无法被解密!
加密文件
1 2 3 4 5 6 7 8 9 10 11 | # -e 加密 -f 指定的文件或目录 # bitcrypt -e -f some/file # -k 指定公钥文件 # bitcrypt -e -f some/file -k some/directory/public.pem # -l 指定AES加密长度,可选值为16,24,32 # bitcrypt -e -f some/file -l 24 # -t 指定AES加密迭代算法,可选值为cfb,ctr,ofb # bitcrypt -e -f some/file -l 32 -t ofb |
解密文件
1 2 3 4 5 | # -d 解密 -f 指定的文件或目录 # bitcrypt -d -f some/file # -k 指定私钥文件 # bitcrypt -d -f some/file -k some/directory/private.pem |
工作原理
BitCrypt的加密流程精简描述如下:
- 生成随机的AES密钥key,AES初始向量iv
- 使用RSA公钥加密key 和 iv,写入加密文件
- 使用AES加密指定的文件,写入加密文件
因此总的来说,BitCrypt使用AES加密文件,然后用RSA加密AES的密钥和初始向量。
BitCrypt的解密流程精简描述如下:
- 从加密文件中读取加密的AES密钥和初始向量
- 使用RSA私钥解密,得到AES密钥和初始向量
- 使用AES解密加密文件,写入解密文件
当然,加解密的过程中还涉及到文件HASH的检测。如果解密文件的HASH和密文中保存的原HASH不相等,说明密文被破坏或私钥不匹配。如果此类情况出现,BitCrypt提示解密失败。
from http://st2py.com/cn/bitcrypt/
项目地址:https://github.com/st2py/bitcrypt
项目地址:https://github.com/st2py/bitcrypt
No comments:
Post a Comment