首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

非对称加密 (公钥加密私钥解密或许公钥解密私钥加密)

2012-10-25 
非对称加密 (公钥加密私钥解密或者公钥解密私钥加密)非对称加密?非对称加密有一对密钥,公钥和私钥。可以用

非对称加密 (公钥加密私钥解密或者公钥解密私钥加密)

非对称加密

?

非对称加密有一对密钥,公钥和私钥。可以用公钥加密,也可以用私钥加密。不过,公钥加密必须用私钥解密,私钥加密必须用公钥解密。如果不对应,则会报这样的异常

javax.crypto.BadPaddingException: Data must start with zero

?

?

代码如下:

?

import java.security.KeyPair;import java.security.KeyPairGenerator;import javax.crypto.Cipher;public class test1 {//公钥加密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)));}}

热点排行