使用RSA加密算法对文件进行非对称加密

package com.ivan.security.algorithm;

/**
 * RSA加密算法的使用
 * @author Ivan
 * @DataTime 2006-12-12 16:38
 * Java 本身不提供 RSA 算法的支持
 * 需下载 assembla_msks_jce.ar 或 bcprov-jdk14-123.jar 包
 */

/**
 * RSA加密原理概述
 * RSA的安全性依赖于大数的分解,公钥和私钥都是两个大素数(大于100的十进制位)的函数。
 * 据猜测,从一个密钥和密文推断出明文的难度等同于分解两个大素数的积
 * ===================================================================
 * (该算法的安全性未得到理论的证明)
 * ===================================================================
 * 密钥的产生:
 * 1.选择两个大素数 p,q ,计算 n=p*q;
 * 2.随机选择加密密钥 e ,要求 e 和 (p-1)*(q-1)互质
 * 3.利用 Euclid 算法计算解密密钥 d , 使其满足 e*d = 1(mod(p-1)*(q-1)) (其中 n,d 也要互质)
 * 4:至此得出公钥为 (n,e) 私钥为 (n,d)
 * ===================================================================
 * 加解密方法:
 * 1.首先将要加密的信息 m(二进制表示) 分成等长的数据块 m1,m2,...,mi 块长 s(尽可能大) ,其中 2^s

 

你可能感兴趣的:(应用安全)