基于 RSA 非对称加密算法的文件分组加密工具
makemake unittestmake bench-
生成 RSA 密钥
-
加密文件
-
解密文件
rfe -h
rfe -g
rfe -e -k [公钥文件路径] -i [待加密文件路径] -o [加密文件输出路径]
rfe -d -k [私钥文件路径] -i [待解密文件路径] -o [解密文件输出路径]
prime.go中实现了两个函数,分别是:
- isPrime:用Miller-Rabin算法检测一个数是否有极大的可能是质数(以前15个质数为底来检测)
- Prime:随机生成一个指定二进制位数的质数(极大的可能)
- 实现思路是:随机生成一个大奇数,然后利用isPrime判定它是否是质数,如果不是,就继续向后找,由于质数分布规律(分布密度与ln(n)成反比),一般来说可以在O(log(n))的时间里找到一个质数
rsa.go中主要实现了三个函数,分别是:
- GenerateKey:生成rsa公私秘钥对
- Encrypt:使用公钥加密一串字节buffer
- 在明文最前面补一个0x01,防止出现第一个字节正好是零时,解密时会漏掉这个字节的情况
- Decrypt:使用私钥解密一串字节buffer
- 对应的,解密后返回的明文也会去掉开头的第一个字节