Total Pageviews

Wednesday, 6 June 2018

BitCrypt是一款开源的文件加密/解密软件

它具有以下特点:
  • 采用MIT协议发布,完全开源,完全免费
  • 采用Go语言开发,安全、高效、易于部署
  • 支持LinuxWindowsOSXFreeBSD四大系统
  • 使用RSA + AES双重加密,军队级别的文件加密技术
  • 支持RSA 1024、2048、4096三种长度的密钥
  • 支持AES 128、192、256三种长度的密钥
  • 支持CFBCTROFB三种迭代模式
  • 公钥用于文件加密,可分享给他人加密文件
  • 私钥用于文件解密,可解密他人加密的文件
  • 加解密过程完全可分开,便于权限管理

适用场景

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

No comments:

Post a Comment