您的位置:首页 > 其它

RSA加密/解密例子

2017-03-25 17:41 363 查看
package encryption;

import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import java.security.*;
import java.util.Arrays;

/**
* User: 刘永健
* Date: 12-10-4
* Time: 下午9:15
* To change this template use File | Settings | File Templates.
*/
public class RSADemo{
public static void main(String[] args) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
//B给A发送的信息
byte[] plain = "password".getBytes();
System.out.println("原文:"+ Arrays.toString(plain));

//A生成一个密钥对
KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");
generator.initialize(3072); // 指定密钥长度
KeyPair keyPair = generator.generateKeyPair();

//A把公钥公开
PublicKey publicKey = keyPair.getPublic();
//A自己保存好私钥
PrivateKey privateKey = keyPair.getPrivate();
System.out.println("公钥:"+publicKey);
System.out.println("私钥:"+privateKey);

Cipher cipher = Cipher.getInstance("RSA");
//B用A的公钥把信息加密后发给A
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
cipher.update(plain);
byte[] result1 = cipher.doFinal();
System.out.println("加密结果:"+Arrays.toString(result1));

//A得到B发过来的信息后用自己的私钥进行解密
cipher.init(Cipher.DECRYPT_MODE, privateKey);
cipher.update(result1);
byte[] result2 = cipher.doFinal();
System.out.println("解密结果:"+Arrays.toString(result2));

System.out.println("原文比较:"+Arrays.equals(result2, plain));
}
}


另,一个例子:
http://sunxboy.iteye.com/blog/209156
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: