公钥加密也称为非对称加密、速度慢、加密和解密的钥匙不相同,某一个人持有私钥,任何人都可以知道公钥
package com.stone.security;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.util.Arrays;
import javax.crypto.Cipher;
/**
* RSA算法 公钥加密 非对称加密
* @author stone
* @date 2014-03-11 00:28:38
*/
public class RSA {
public static final String KEY_ALGORITHM = "RSA";
public static final String CIPHER_ALGORITHM_ECB1 = "RSA/ECB/PKCS1Padding";
public static final String CIPHER_ALGORITHM_ECB2 = "RSA/ECB/OAEPWithSHA-1AndMGF1Padding"; //不能用
public static final String CIPHER_ALGORITHM_ECB3 = "OAEPWithSHA-256AndMGF1Padding"; //不能用
static PublicKey publicKey;
static PrivateKey privateKey;
static Cipher cipher;
static KeyPair keyPair;
public static void main(String[] args) throws Exception {
method1("斯柯达U*(Sfsad7f()*^%%$");
method2("斯柯达U*(Sfsad7f()*^%%$");
method3("斯柯达U*(Sfsad7f()*^%%$");
}
/**
* 公钥加密,私钥解密 使用默认CIPHER_ALGORITHM_ECB1
* @param str
* @throws Exception
*/
static void method1(String str) throws Exception {
KeyPairGenerator keyGenerator = KeyPairGenerator.getInstance(KEY_ALGORITHM);
KeyPair keyPair = keyGenerator.generateKeyPair();
publicKey = keyPair.getPublic();
privateKey = keyPair.getPrivate();
cipher = Cipher.getInstance(KEY_ALGORITHM);
cipher.init(Cipher.ENCRYPT_MODE, publicKey); //公钥加密
byte[] encrypt = cipher.doFinal(str.getBytes());
System.out.println("公钥加密后1:" + Arrays.toString(encrypt));
cipher.init(Cipher.DECRYPT_MODE, privateKey);//私钥解密
byte[] decrypt = cipher.doFinal(encrypt);
System.out.println("私钥解密后1:" + new String(decrypt));
}
/**
* 私钥加密,公钥解密 使用默认CIPHER_ALGORITHM_ECB1
* @param str
* @throws Exception
*/
static void method2(String str) throws Exception {
KeyPairGenerator keyGenerator = KeyPairGenerator.getInstance(KEY_ALGORITHM);
KeyPair keyPair = keyGenerator.generateKeyPair();
publicKey = keyPair.getPublic();
privateKey = keyPair.getPrivate();
cipher = Cipher.getInstance(KEY_ALGORITHM);
cipher.init(Cipher.ENCRYPT_MODE, privateKey); //私钥加密
byte[] encrypt = cipher.doFinal(str.getBytes());
System.out.println("私钥加密后2:" + Arrays.toString(encrypt));
cipher.init(Cipher.DECRYPT_MODE, publicKey);//公钥解密
byte[] decrypt = cipher.doFinal(encrypt);
System.out.println("公钥解密后2:" + new String(decrypt));
}
/**
* 私钥加密,公钥解密 使用CIPHER_ALGORITHM_ECB1 = RSA/ECB/PKCS1Padding
* @param str
* @throws Exception
*/
static void method3(String str) throws Exception {
KeyPairGenerator keyGenerator = KeyPairGenerator.getInstance(KEY_ALGORITHM);
KeyPair keyPair = keyGenerator.generateKeyPair();
publicKey = keyPair.getPublic();
privateKey = keyPair.getPrivate();
cipher = Cipher.getInstance(CIPHER_ALGORITHM_ECB1);
cipher.init(Cipher.ENCRYPT_MODE, privateKey); //私钥加密
byte[] encrypt = cipher.doFinal(str.getBytes());
System.out.println("私钥加密后3:" + Arrays.toString(encrypt));
cipher.init(Cipher.DECRYPT_MODE, publicKey);//公钥解密
byte[] decrypt = cipher.doFinal(encrypt);
System.out.println("公钥解密后3:" + new String(decrypt));
}
}
分享到:
相关推荐
Java公钥加密算法RSA.rar可在NetBeans下直接运行 Java公钥加密算法RSA.rar可在NetBeans下直接运行
主要介绍了Java加密算法RSA代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
JAVA RSA 加密算法 RSA.java RSA公钥加解密,RSA私钥加解密,MD5withRSA 签名 MD5withRSA签名较验
用JAVA编写的RSA.其中包括利用私钥进行解密,利用公钥进行解密,利用私钥进行加密,利用公钥进行加密,生成密钥对,以及测试数据。
用java实现的rsa加密算法,里面有详细的加密过程的实现
公钥加密算法RSA(java).rarNetBeans环境下可运行
Java加密技术非对称加密算法RSA.doc
用JAVA实现Rsa非对称加密算法 不算简单的算法 既可以加密又可以解密
RSA加密算法实现以及C#与java互通加解密,解决RSA算法在java与C#相互通用
用JAVA实现RSA的解密和加密的算法。~亲测可以运行
这个是Java中常用的加密算法RSA,有兴趣可以下载看看,挺不错的哦!
基于java的开发源码-用Java加密类实现DES、RSA及SHA的加密算法.zip 基于java的开发源码-用Java加密类实现DES、RSA及SHA的加密算法.zip 基于java的开发源码-用Java加密类实现DES、RSA及SHA的加密算法.zip 基于java的...
对不起,之前上传的那个RSA的实现代码,在上传时传的是空文档。现在纠正过来,sorry~
java 加密算法包括:消息摘要(MD5、SHA)、对称加密算法(DES),非对称加密算法RSA,数字签名DSA
主要介绍了Java实现的RSA加密解密算法,结合实例形式分析了java RAS加密解密算法的相关实现技巧,需要的朋友可以参考下
本rsa算法是使用Java与javascript加密解密范例代码,该资料从互联网收集,加上了自己的使用体会,如果对你有帮助那是万幸! js加密部分
RSA加密算法,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。加密算法E和解密算法D也...
RSA加密算法的源代码,用JAVA实现 速度很快哦
java加密源代码程序,完全用JAVA实现的
基于Java的实例源码-用Java加密类实现DES、RSA及SHA的加密算法.zip