/RSA-File-Encryptor

基于 RSA 非对称加密算法的文件分组加密工具

Primary LanguageGo

RSA-File-Encryptor

基于 RSA 非对称加密算法的文件分组加密工具

说明

编译

make

运行单元测试

make unittest

运行性能对比测试

make bench

功能

  • 生成 RSA 密钥

  • 加密文件

  • 解密文件

使用示例

查看帮助

rfe -h

生成密钥对

rfe -g

加密文件

rfe -e -k [公钥文件路径] -i [待加密文件路径] -o [加密文件输出路径]

解密文件

rfe -d -k [私钥文件路径] -i [待解密文件路径] -o [解密文件输出路径]

设计文档

myrsa

prime.go中实现了两个函数,分别是:

  • isPrime:用Miller-Rabin算法检测一个数是否有极大的可能是质数(以前15个质数为底来检测)
  • Prime:随机生成一个指定二进制位数的质数(极大的可能)
    • 实现思路是:随机生成一个大奇数,然后利用isPrime判定它是否是质数,如果不是,就继续向后找,由于质数分布规律(分布密度与ln(n)成反比),一般来说可以在O(log(n))的时间里找到一个质数

rsa.go中主要实现了三个函数,分别是:

  • GenerateKey:生成rsa公私秘钥对
  • Encrypt:使用公钥加密一串字节buffer
    • 在明文最前面补一个0x01,防止出现第一个字节正好是零时,解密时会漏掉这个字节的情况
  • Decrypt:使用私钥解密一串字节buffer
    • 对应的,解密后返回的明文也会去掉开头的第一个字节