私钥加密需要一个共享的密钥,那么如何传递密钥呢?web环境下,直接传递的话很容易被侦听到,幸好有了公钥加密的出现。公钥加密也叫不对称加密,不对称算法使用一对密钥对,一个公钥,一个私钥,使用公钥加密的数据,只有私钥能解开(可用于加密);同时,使用私钥加密的数据,只有公钥能解开(签名)。但是速度很慢(比私钥加密慢100到1000倍),公钥的主要算法有RSA,还包括Blowfish,Diffie-Helman等,jdk1.5种提供了对RSA的支持,是一个改进的地方:
package com.ijo.security;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import javax.crypto.Cipher;
public class PublicExample {
public static void main(String[] args) throws Exception {
byte[] plainText = "Hellow china".getBytes("UTF8");
// 构成一个RSA密钥
System.out.println("Start generating RSA key");
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(1024);
KeyPair key = keyGen.generateKeyPair();
System.out.println("Finish generating RSA key");
// 获得一个RSA的Cipher类,使用公鈅加密
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
System.out.println("" + cipher.getProvider().getInfo());
System.out.println("Start encryption");
cipher.init(Cipher.ENCRYPT_MODE, key.getPublic());
byte[] cipherText = cipher.doFinal(plainText);
System.out.println("Finish encryption:");
System.out.println(new String(cipherText, "UTF8"));
// 使用私鈅解密
System.out.println("Start decryption");
cipher.init(Cipher.DECRYPT_MODE, key.getPrivate());
byte[] newPlainText = cipher.doFinal(cipherText);
System.out.println("Finish decryption:");
System.out.println(new String(newPlainText, "UTF8"));
}
}
分享到:
相关推荐
RSA公钥加密RSA公钥加密
RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被...
公钥加密,数字签名,公钥认证,认证授权,基于 PKI 授权.zip
可以直接运行成功的RSA加密解密示例 JAVA端采用公钥加密,服务端C#采用私钥解密。
深空公钥加密系统是一款功能强大的公钥加密工具,工具为绿色版本,简单易用,主要功能可帮助用户通过RSA512位-RSA8192位不等密钥长度的公钥来对电脑的文件实现加密操作,软件支持数字签名、数字验签、公钥加密、私钥...
已有带关键词搜索的公钥加密方案和无安全信道的带关键词搜索的公钥加密方案存在关键词猜测攻击的安全性缺陷。针对这一问题,提出了一个无安全信道无指定服务器的带关键词搜索的公钥加密方案框架。该框架不仅具有无...
公钥加密算法NTRU被认为是一种效率较高的加密算法,且更适合于RFID系统,因此提出的协议采用了NTRU公钥加密算法。对该协议的安全性和性能进行了比较分析,结果表明该协议可以为RFID系统提供更好的安全性,能为用户...
【delphiRSA加解密】支持RSA公钥加密私钥解密,RSA私钥加密公钥解密,秘钥格式支持PKCS8和PKCS1,D7~XE10可用
公钥加密私钥解密,也可以说是 "公共密钥加密系统 " 私钥加密公钥解密,一般不这么说,应叫 "私钥签名,公钥验证 ",也可以说是“公共密钥签名系统” 再来说一下 "公共密钥签名系统 "目的:(如果晕就多看几遍,这个没...
广播加密和基于属性加密是两种重要的公钥加密方案,可将加密内容同时传送给多个用户,在付费电视、数字版权管理和资源访问控制等领域有重要应用。对一个基于身份广播加密方案进行了分析,表明攻击者只要得到某个用户...
C# RSA 公钥加密,私钥解密,与大家分享,开发工具是VS2017
java中使用公钥加密私钥解密原理实现license控制
亲测可用,可参考:https://blog.csdn.net/qq_37835111/article/details/87358779
信息安全课程的上机实习 基于RSA的公钥加密 包含源代码和截图
基于RSA的公钥加密与解密,java语言实现对数字的加解密操作。
java公钥加密私钥解密与数字证书,数字证书的生成看这里 http://hi.baidu.com/chenminliang/blog/item/2b30db24920ae0338744f9db.html
C#-RSA非对称加密公钥加密 这是一个完整的实例,不像一些网站只有局部代码,有的又只有代码,没有库文件等等。真正的拿到COPY下就用
公钥加密算法RSA(java).rarNetBeans环境下可运行
安卓客户端公钥加密。
使用公钥加密私钥解密原理 ,實現分析詳解