java加密和数字签名3 公钥加密
2013-10-25 14:08
246 查看
转载: http://blog.csdn.net/jiangzhuzhu/article/details/5205045
最近初步接触了下Java加密和数字签名的相关内容,我学习的过程大概分五步:
1)消息摘要
2)私钥加密
3)公钥加密
4)数字签名
5)数字证书
下面的代码是第三部分:公钥加密
希望能为刚刚接触这个的朋友们省点事
最近初步接触了下Java加密和数字签名的相关内容,我学习的过程大概分五步:
1)消息摘要
2)私钥加密
3)公钥加密
4)数字签名
5)数字证书
下面的代码是第三部分:公钥加密
希望能为刚刚接触这个的朋友们省点事
package security; import java.security.KeyPair; import java.security.KeyPairGenerator; import javax.crypto.Cipher; /** * 此例子是一个公钥加密例子,Cipher类使用KeyPairGenerator(顾名思义:一对钥匙生成器)生成的公钥和私钥 * * 公钥加密也叫不对称加密,不对称算法使用一对密钥对,一个公钥,一个私钥,使用公钥加密的数据,只有私钥能 * 解开(可用于加密);同时,使用私钥加密的数据,只有公钥能解开(签名)。但是速度很慢(比私钥加密慢100到 * 1000倍),公钥的主要算法有RSA,还包括Blowfish,Diffie-Helman 等 */ public class PublicKey { public static void main(String[] args) throws Exception { String before = "asdf"; byte[] plainText = before.getBytes("UTF8"); //产生一个RSA密钥生成器KeyPairGenerator(顾名思义:一对钥匙生成器) KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA"); //定义密钥长度1024位 keyGen.initialize(1024); //通过KeyPairGenerator产生密钥,注意:这里的key是一对钥匙!! KeyPair key = keyGen.generateKeyPair(); //获得一个RSA的Cipher类,使用公钥加密 Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); // System.out.println("/n" + cipher.getProvider().getInfo()); System.out.println("/n用公钥加密..."); //Cipher.ENCRYPT_MODE意思是加密,从一对钥匙中得到公钥 key.getPublic() cipher.init(Cipher.ENCRYPT_MODE, key.getPublic()); //用公钥进行加密,返回一个字节流 byte[] cipherText = cipher.doFinal(plainText); //以UTF8格式把字节流转化为String String after1 = new String(cipherText, "UTF8"); System.out.println("用公钥加密完成:"+after1); //使用私钥解密 System.out.println("/n用私钥解密..."); //Cipher.DECRYPT_MODE意思是解密,从一对钥匙中得到私钥 key.getPrivate() cipher.init(Cipher.DECRYPT_MODE, key.getPrivate()); //用私钥进行解密,返回一个字节流 byte[] newPlainText = cipher.doFinal(cipherText); String after2 = new String(newPlainText, "UTF8"); System.out.println("用私钥解密完成:"+after2); } }
相关文章推荐
- Java加密和数字签名编程快速入门
- Java加密和数字签名编程快速入门
- PHP通过OpenSSL生成证书、密钥并且加密解密数据,以及公钥,私钥和数字签名的理解
- Java加密解密之数字签名
- Java加密和数字签名消息摘要一
- Java加密和数字签名编程快速入门
- 加密,解密,认证,数字签名,公钥私钥
- 公钥私钥加密解密数字证书数字签名详解【转】
- Java加密和数字签名私钥加密二
- 加密和解密,(数字)签名和验证,公钥私钥
- 公钥私钥加密解密数字证书数字签名详解
- Java加密和数字签名编程快速入门
- Java数字证书对文件、加密、解密、签名、校验签名(一)
- 公钥私钥加密解密数字证书数字签名详解
- Java加密和数字签名编程快速入门
- Java数字证书对文件、加密、解密、签名、校验签名(二)
- Java加密解密和数字签名完整代码示例
- 加密,解密,认证,数字签名,公钥私钥
- 加密,解密,认证,数字签名,公钥私钥
- Java加密和数字签名编程快速入门