Skip to content

chen3441251/RSAUtils

Repository files navigation

RSAUtils

RSA算法 是非对称加密算法

  • RSA算法是最流行的公钥密码算法,使用长度可以变化的密钥。RSA是第一个既能用于数据加密也能用于数字签名的算法。
  • RSA 工具类。提供加密,解密,生成密钥对等方法。
  • RSA加密原理概述
  • RSA的安全性依赖于大数的分解,公钥和私钥都是两个大素数(大于100的十进制位)的函数。
  • 据猜测,从一个密钥和密文推断出明文的难度等同于分解两个大素数的积
  • ===================================================================
  • (该算法的安全性未得到理论的证明)
  • ===================================================================
  • 密钥的产生:
  • 1.选择两个大素数 p,q ,计算 n=p*q;
  • 2.随机选择加密密钥 e ,要求 e 和 (p-1)*(q-1)互质
  • 3.利用 Euclid 算法计算解密密钥 d , 使其满足 ed = 1(mod(p-1)(q-1)) (其中 n,d 也要互质)
  • 4:至此得出公钥为 (n,e) 私钥为 (n,d)
  • ===================================================================
  • 加解密方法:
  • 1.首先将要加密的信息 m(二进制表示) 分成等长的数据块 m1,m2,...,mi 块长 s(尽可能大) ,其中 2^s<n
  • 2:对应的密文是: ci = mi^e(mod n)
  • 3:解密时作如下计算: mi = ci^d(mod n)
  • ===================================================================
  • RSA速度
  • 由于进行的都是大数计算,使得RSA最快的情况也比DES慢上100倍,无论 是软件还是硬件实现。
  • 速度一直是RSA的缺陷。一般来说只用于少量数据 加密。
  • BASE64转换说明:demo中是使用的android自带的,如果是java后台把对应的替换成org.apachesBASE64,这样就能兼容iOS和android等平台
  • 秘钥长度配置:修改DEFAULT_KEY_SIZE的长度即可

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages