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的长度即可