Java加密/解密之非对称加密算法_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Java加密/解密之非对称加密算法

Java加密/解密之非对称加密算法

 2013/7/18 0:13:16  qincidong  程序员俱乐部  我要评论(0)
  • 摘要:比较常见的是RSA(适用于对少量数据加密)和DSA(一般用于数字签名中)。Java使用RSA加密解密:packagecom.security.example.example4;importjava.security.InvalidKeyException;importjava.security.KeyPair;importjava.security.KeyPairGenerator;importjava.security.NoSuchAlgorithmException;importjava
  • 标签:Java 算法

比较常见的是RSA(适用于对少量数据加密)和DSA(一般用于数字签名中)。

?

Java使用RSA加密解密

package com.security.example.example4;

?

import java.security.InvalidKeyException;

import java.security.KeyPair;

import java.security.KeyPairGenerator;

import java.security.NoSuchAlgorithmException;

import java.security.interfaces.RSAPrivateKey;

import java.security.interfaces.RSAPublicKey;

?

import javax.crypto.BadPaddingException;

import javax.crypto.Cipher;

import javax.crypto.IllegalBlockSizeException;

import javax.crypto.NoSuchPaddingException;

?

public class RSA {

// 完成加密/解密工作

private Cipher cipher = null;

// 公钥

private RSAPublicKey rsaPublicKey = null;

// 私钥

private RSAPrivateKey rsaPrivateKey = null;

?

public RSA() {

try {

cipher = Cipher.getInstance("rsa");

KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");

KeyPair keypair = keyPairGen.genKeyPair();

rsaPrivateKey = (RSAPrivateKey) keypair.getPrivate();

rsaPublicKey = (RSAPublicKey) keypair.getPublic();

} catch (NoSuchAlgorithmException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (NoSuchPaddingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

?

/**

* 使用私钥加密。

* @param msg:要加密的消息。

* @return加密后的密文

*/

public byte[] encryp(String msg) {

try {

cipher.init(Cipher.ENCRYPT_MODE, rsaPrivateKey);

byte[] encrypMsg = cipher.doFinal(msg.getBytes());

return encrypMsg;

} catch (InvalidKeyException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IllegalBlockSizeException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (BadPaddingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return null;

}

?

/**

* 使用公钥解密。

* @param msg:密文

* @return解密后的原文

*/

public byte[] decryp(byte[] msg) {

try {

cipher.init(Cipher.DECRYPT_MODE, rsaPublicKey);

byte[] decrypMsg = cipher.doFinal(msg);

return decrypMsg;

} catch (InvalidKeyException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IllegalBlockSizeException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (BadPaddingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return null;

}

/**

* @param args

*/

public static void main(String[] args) {

String msg = "java安全编程——RSA";

System.out.println("原文是:" + msg);

RSA rsa = new RSA();

byte[] enMsg = rsa.encryp(msg);

System.out.println("加密后是:" + new String(enMsg));

byte[] deMsg = rsa.decryp(enMsg);

System.out.println("解密后是:" + new String(deMsg));

?

}

?

}

?

输出:

原文是:java安全编程——RSA

加密后是:_c_3乿e3岥赾悤_?_Q敊怦i?_f?儠B橱狎?_駸1=脖X揖?_p?!\x7BJ?_?-nZ臑?摁_UB厕瓀犆}~S_宜腒馾?=_

解密后是:java安全编程——RSA

发表评论
用户名: 匿名