Java加密和数字签名公钥加密三
来源:互联网 发布:怎么在淘宝外卖上开店 编辑:程序博客网 时间:2024/04/30 11:15
http://www.yuloo.com/news/0908/296030.html
公钥加密:
上面提到,私钥加密需要一个共享的密钥,那么如何传递密钥呢?web环境下,直接传递的话很容易被侦听到,幸好有了公钥加密的出现。公钥加密也叫不对称加密,不对称算法使用一对密钥对,一个公钥,一个私钥,使用公钥加密的数据,只有私钥能解开(可用于加密);同时,使用私钥加密的数据,只有公钥能解开(签名)。但是速度很慢(比私钥加密慢100到1000倍),公钥的主要算法有RSA,还包括Blowfish,Diffie-Helman等,jdk1.5 种提供了对RSA的支持,是一个改进的地方:
Java代码
/**
*PublicExample.java
*Copyright 2005-2-16
*/
import java.security.Key;
import javax.crypto.Cipher;
import java.security.KeyPairGenerator;
import java.security.KeyPair;
/**
*一个简单的公鈅加密例子,Cipher类使用KeyPairGenerator生成的公鈅和私鈅
*/
public class PublicExample{
public static void main(String[] args) throws Exception{
if(args.length!=1){
System.err.println("Usage:java PublicExample <text>");
System.exit(1);
}
byte[] plainText=args[0].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"));
}
}
- Java加密和数字签名公钥加密三
- java加密和数字签名3 公钥加密
- Java加密和数字签名
- Java加密和数字签名
- Java加密和数字签名
- Java加密和数字签名
- 数字签名和公钥加密
- Java加密和数字签名私钥加密二
- java加密和数字签名2 私钥加密
- Java加密和数字签名数字签名四
- java加密和数字签名4 数字签名
- (转)Java加密和数字签名
- Java加密和数字签名编程
- Java加密和数字签名编程
- 公钥加密 和 数字签名的 理解
- 数字签名和公钥,密钥加密机制
- Java中的加密和DSA数字签名
- Java中的加密和DSA数字签名
- 关于Java对象和XML之间的相互转换
- Java加密和数字签名消息摘要一
- Java加密和数字签名私钥加密二
- JAVA反射机制学习
- hdu 2254 不错的矩阵 从a到b 在规定时间内有多少条路到达
- Java加密和数字签名公钥加密三
- Java加密和数字签名数字签名四
- 编译安装lnmp及问题解决
- Java加密和数字签名数字证书五
- 笔试面试Blog收藏
- 走过,思科三年,心得之体会
- 关于草根小团队创业的一些看法
- java经典算法_010一球从100米高度自由落下,每次落地后反跳回原高度的一半.
- python网络套接字/多线程锁