1 / 24
文档名称:

Java加密技术 非对称加密算法RSA.doc

格式:doc   页数:24页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Java加密技术 非对称加密算法RSA.doc

上传人:cdsqbyl 2015/4/16 文件大小:0 KB

下载得到文件列表

Java加密技术 非对称加密算法RSA.doc

文档介绍

文档介绍:Java加密技术
接下来我们介绍典型的非对称加密算法——RSA
RSA
这种算法1978年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron
Rivest, AdiShamir 和Leonard Adleman。

这种加密算法的特点主要是密钥的变化,上文我们看到DES只有一个密钥。相当于只有一把钥匙,如果这把钥匙丢了,数据也就不安全了。RSA同时有两把钥匙,公钥与私钥。同时支持数字签名。数字签名的意义在于,对传输过来的数据进行校验。确保数据在传输工程中不被修改。
流程分析:
甲方构建密钥对儿,将公钥公布给乙方,将私钥保留。
甲方使用私钥加密数据,然后用私钥对加密后的数据签名,发送给乙方签名以及加密后的数据;乙方使用公钥、签名来验证待解密数据是否有效,如果有效使用公钥对数据解密。
乙方使用公钥加密数据,向甲方发送经过加密后的数据;甲方获得加密数据,通过私钥解密。
按如上步骤给出序列图,如下:
按如上步骤给出序列图,如下:
Java代码
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;

import ;
import ;

import ;

/**
* RSA安全编码组件
*
* ***@author 梁栋
* ***@version
* ***@since
*/
public abstract class RSACoder extends Coder {
public static final String KEY_ALGORITHM = "RSA";
public static final String SIGNATURE_ALGORITHM = "MD5withRSA";

private static final String PUBLIC_KEY = "RSAPublicKey";
private static final String PRIVATE_KEY = "RSAPrivateKey";

/**
* 用私钥对信息生成数字签名
*
* ***@param data
* 加密数据
* ***@param privateKey
* 私钥
*
* ***@return
* ***@throws Exception
*/
public static String sign(byte[] data, String privateKey) throws Exception
{
// 解密由base64编码的私钥
byte[] keyBytes = decryptBASE64(privateKey);

// 构造PKCS8EncodedKeySpec对象
PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);


// KEY_ALGORITHM 指定的加密算法
KeyFactory keyFactory = (KEY_ALGORITHM);

// 取私钥匙对象
PrivateKey priKey = (pkcs8KeySpec);

// 用私钥对信息生成数字签名
Signatur