RSA非对称加密解密例子
2012-05-24 20:33
369 查看
------要加密的内容
String encryptText = "encryptText";
keyPairGen.initialize(1024);
KeyPair keyPair = keyPairGen.generateKeyPair();
// Generate keys
RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();
RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
//存放公钥密钥路径。
FileOutputStream pubfos = new FileOutputStream("E:/xlmPublicKey.dat");
ObjectOutputStream puboos = new ObjectOutputStream(pubfos);
//生成公钥密钥
puboos.writeObject(publicKey);
puboos.close();
//保存私钥文件
FileOutputStream prifos = new FileOutputStream("E:/xlmPrivateKey.dat");
ObjectOutputStream prioos = new ObjectOutputStream(prifos);
prioos.writeObject(privateKey);
prioos.close();
---------采用公钥进行加密
byte[] e = encrypt.encrypt2(privateKey, encryptText.getBytes());
byte[] de = encrypt.decrypt2(publicKey, e);
System.out.println(encrypt.bytesToString(e));
System.out.println(encrypt.bytesToString(de));
//保存密文
FileOutputStream lfos = new FileOutputStream("E:/license.dat");
DataOutputStream ldos=new DataOutputStream(lfos);
ldos.write(e);
ldos.close();
解密:
RSAEncrypt encrypt = new RSAEncrypt();
// 生成实现指定摘要算法的 KeyPairGenerator 对象。RSA摘要
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
FileInputStream pubfis = new FileInputStream("E:/xlmPublicKey.dat");
ObjectInputStream puboos = new ObjectInputStream(pubfis);
//生成公钥密钥
RSAPublicKey pk=(RSAPublicKey)puboos.readObject();
puboos.close();
byte[] b = new byte[128];
int len = 0;
FileInputStream lfis = new FileInputStream("E:/license.dat");
DataInputStream ldos=new DataInputStream(lfis);
while ((len = ldos.read(b)) != -1) {
ldos.read(b, 0, len);
}
byte[] de = encrypt.decrypt2(pk, b);
System.out.println(encrypt.bytesToString(de));
/**
* 私钥加密
*
* @return byte[]
*/
protected byte[] encrypt2(RSAPrivateKey privateKey, byte[] obj) {
if (privateKey != null) {
try {
Cipher cipher = Cipher.getInstance("RSA");
// ENCRYPT_MODE : 用于将 cipher 初始化为加密模式的常量。
cipher.init(Cipher.ENCRYPT_MODE, privateKey);
return cipher.doFinal(obj);
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
/**
* Basic decrypt method 公钥解密
*
* @return byte[]
*/
protected byte[] decrypt2(RSAPublicKey publicKey, byte[] obj) {
if (publicKey != null) {
try {
Cipher cipher = Cipher.getInstance("RSA");
// DECRYPT_MODE : 用于将 cipher 初始化为解密模式的常量。
cipher.init(Cipher.DECRYPT_MODE, publicKey);
return cipher.doFinal(obj);
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
String encryptText = "encryptText";
keyPairGen.initialize(1024);
KeyPair keyPair = keyPairGen.generateKeyPair();
// Generate keys
RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();
RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
//存放公钥密钥路径。
FileOutputStream pubfos = new FileOutputStream("E:/xlmPublicKey.dat");
ObjectOutputStream puboos = new ObjectOutputStream(pubfos);
//生成公钥密钥
puboos.writeObject(publicKey);
puboos.close();
//保存私钥文件
FileOutputStream prifos = new FileOutputStream("E:/xlmPrivateKey.dat");
ObjectOutputStream prioos = new ObjectOutputStream(prifos);
prioos.writeObject(privateKey);
prioos.close();
---------采用公钥进行加密
byte[] e = encrypt.encrypt2(privateKey, encryptText.getBytes());
byte[] de = encrypt.decrypt2(publicKey, e);
System.out.println(encrypt.bytesToString(e));
System.out.println(encrypt.bytesToString(de));
//保存密文
FileOutputStream lfos = new FileOutputStream("E:/license.dat");
DataOutputStream ldos=new DataOutputStream(lfos);
ldos.write(e);
ldos.close();
解密:
RSAEncrypt encrypt = new RSAEncrypt();
// 生成实现指定摘要算法的 KeyPairGenerator 对象。RSA摘要
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
FileInputStream pubfis = new FileInputStream("E:/xlmPublicKey.dat");
ObjectInputStream puboos = new ObjectInputStream(pubfis);
//生成公钥密钥
RSAPublicKey pk=(RSAPublicKey)puboos.readObject();
puboos.close();
byte[] b = new byte[128];
int len = 0;
FileInputStream lfis = new FileInputStream("E:/license.dat");
DataInputStream ldos=new DataInputStream(lfis);
while ((len = ldos.read(b)) != -1) {
ldos.read(b, 0, len);
}
byte[] de = encrypt.decrypt2(pk, b);
System.out.println(encrypt.bytesToString(de));
/**
* 私钥加密
*
* @return byte[]
*/
protected byte[] encrypt2(RSAPrivateKey privateKey, byte[] obj) {
if (privateKey != null) {
try {
Cipher cipher = Cipher.getInstance("RSA");
// ENCRYPT_MODE : 用于将 cipher 初始化为加密模式的常量。
cipher.init(Cipher.ENCRYPT_MODE, privateKey);
return cipher.doFinal(obj);
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
/**
* Basic decrypt method 公钥解密
*
* @return byte[]
*/
protected byte[] decrypt2(RSAPublicKey publicKey, byte[] obj) {
if (publicKey != null) {
try {
Cipher cipher = Cipher.getInstance("RSA");
// DECRYPT_MODE : 用于将 cipher 初始化为解密模式的常量。
cipher.init(Cipher.DECRYPT_MODE, publicKey);
return cipher.doFinal(obj);
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
相关文章推荐
- Java对称与非对称加密解密,AES与RSA
- 非对称加解密——RSA加密、解密以及数字签名
- openssl pem密钥文件rsa加密解密例子
- RSA不限长度非对称加密解密C#
- 漫谈iOS RSA非对称加密与解密
- OpenSSL生成证书进行iOS加密,java解密的RSA非对称加密 详解
- Java对称与非对称加密解密,AES与RSA
- python 加密 解密 签名 验证签名 公钥 私钥 非对称加密 RSA
- java RSA非对称加密-解密(简洁明了)
- android RSA加密 解密 非对称可逆加密
- CryptoAPI与openssl RSA非对称加密解密(PKCS1 PADDING)交互
- Android: AndroidKeyStore 非对称RSA加密解密
- RSA加密/解密例子
- Android安全之非对称加密RSA密钥生成、加密、解密
- RSA 加解密的例子,JS加密--php解密
- 对文件压缩加密,解密解压缩,非对称加密,RSA,AES算法
- Java对称与非对称加密解密,AES与RSA
- JAVA 获取RSA非对称加密,私钥加密、公钥解密
- CryptoAPI与openssl RSA非对称加密解密(PKCS1 PADDING)交互
- openssl rsa 加密,解密,签名,验签简单例子