RSA加密/解密例子

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值