非对称加密
非对称加密有一对密钥,公钥和私钥。可以用公钥加密,也可以用私钥加密。不过,公钥加密必须用私钥解密,私钥加密必须用公钥解密。如果不对应,则会报这样的异常
javax.crypto.BadPaddingException: Data must start with zero
代码如下
- import java.security.KeyPair;
- import java.security.KeyPairGenerator;
- import javax.crypto.Cipher;
- public class RSA {
- //公钥加密
- public byte[] PublicEncrypt(KeyPair key,String str)throws Exception {
- Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
- cipher.init(Cipher.ENCRYPT_MODE, key.getPublic());
- return cipher.doFinal(str.getBytes("UTF8"));
- }
- //公钥解密
- public byte[] PublicDECRYPT (KeyPair key,byte[] data)throws Exception {
- Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
- cipher.init(Cipher.DECRYPT_MODE, key.getPublic());
- return cipher.doFinal(data);
- }
- //私钥加密
- public byte[] PrivateEncrypt (KeyPair key,String str)throws Exception {
- Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
- cipher.init(Cipher.ENCRYPT_MODE, key.getPrivate());
- return cipher.doFinal(str.getBytes("UTF8"));
- }
- //私钥解密
- public byte[] PrivateDECRYPT(KeyPair key,byte[] data)throws Exception {
- Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
- cipher.init(Cipher.DECRYPT_MODE, key.getPrivate());
- return cipher.doFinal(data);
- }
- public static void main(String args[]) throws Exception {
- String str = "Hello World!";
- KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
- keyGen.initialize(1024);
- KeyPair key = keyGen.generateKeyPair();
- test1 t = new test1();
- System.out.println("加密前原文:"+str);
- byte[] data = t.PublicEncrypt(key,str);
- System.out.println("私钥解密后:"+new String(t.PrivateDECRYPT(key,data)));
- byte[] data1 = t.PrivateEncrypt(key,str);
- System.out.println("公钥解密后:"+new String(t.PublicDECRYPT(key,data1)));
- }
- }
相关推荐
此文档内含有RSA加解密算法java源程序,可以直接运行。
C#RSA加密与JAVA解密,实现相互通信,对字符进行加密,java解密,对密文字节进行编码
由于Java的RSA加解密一般都是用RSA/ECB/PKCS1PADDING,导致Python一般的RSA加密库的加解密结果与Java的不兼容,Python下目前能与之兼容的RSA的库目前发现的只有一个,就是m2crypto。 这个库目前的问题是在windows...
RSA解密加密JAVA
非对称加密算法RSA算法的JAVA实现,可视化界面,支持多种形式,供参考
JAVA+RSA的DEMO工程,适合初学者学习RSA加密解密 文档参看 http://blog.csdn.net/u013400939/article/details/44490441
java RSA加密解密
RSA加密算法实现以及C#与java互通加解密,解决RSA算法在java与C#相互通用
RSA加解密,Java,Android前后端可以用,已经解决长度限制,本人用的idea,亲测可以用
java rsa 加解密 包含界面,随机生成密钥
* RSA加密解密:私钥解密,公钥加密。 * RSA数字签名-俗称加签验签:私钥加签,公钥验签。 * RSA加密解密:私钥解密,公钥加密。 * RSA数字签名-俗称加签验签:私钥加签,公钥验签。 * RSA加密解密:私钥...
Java OpenSSL生成的RSA公私钥进行数据加解密详细介绍 项目: JAVA生成的RSA的密文,通过C++来解密。 RSA这里就不多介绍了大家自己去看。 JAVA也是通过包来实现加密和解密的,那么我的C++是通过OPENSSL的库来实现的...
C#实现RSA加密,JAVA进行解密,实现JAVA与C#的相互通信
使用RSA非对称加密完成Java后端RSA加密和分段加解密,最近研究了RSA非对称加密,关于什么是RSA,网上各种文章一搜一大把,由于RSA的特性,一个1024位的密钥只能加密117位...下面就给出如何完成后端RSA加解密和分段加解密
RSA加密解密实例,环境eclipse + maven
这个RSA加解密的Demo是我从别的地方花了好多金币下载的,希望对大家有帮助,资源共享嘛。
经过本人修改,简化并完善了别人的代码,使其更加的容易理解和学习! 此为一个完整的项目,...功能:服务端随机生成密钥,JS用公钥加密,服务端用私钥解密。用到的JS加密文件是从官网下载的最新版,速度快,稳定性好!
分别用C#、Java实现的RSA和DES加解密算法,包含demo源码,经实际项目验证。
主要介绍了Java实现的RSA加密解密算法,结合实例形式分析了java RAS加密解密算法的相关实现技巧,需要的朋友可以参考下
rsa加解密