package com.util;
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; 
pto.BadPaddingException; 
pto.Cipher; 
pto.IllegalBlockSizeException; 
pto.NoSuchPaddingException; 
 
public class EncrypRSA { 
     
    /**
    * 加密
    * @param publicKey
    * @param srcBytes
    * @return
    * @throws NoSuchAlgorithmException
    * @throws NoSuchPaddingException
    * @throws InvalidKeyException
    * @throws IllegalBlockSizeException
    * @throws BadPaddingException
    */ 
    protected byte[] encrypt(RSAPublicKey publicKey,byte[] srcBytes) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException{ 
        if(publicKey!=null){ 
            //Cipher负责完成加密或解密工作,基于RSA 
            Cipher cipher = Instance("RSA"); 
            //根据公钥,对Cipher对象进行初始化 
            cipher.init(Cipher.ENCRYPT_MODE, publicKey); 
            byte[] resultBytes = cipher.doFinal(srcBytes); 
            return resultBytes; 
        } 
        return null; 
    } 
     
    /**
    * 解密 
    * @param privateKey
    * @param srcBytes
    * @return
    * @throws NoSuchAlgorithmException
    * @throws NoSuchPaddingException
    * @throws InvalidKeyException
    * @throws IllegalBlockSizeException
    * @throws BadPaddingException
    */ 
    protected byte[] decrypt(RSAPrivateKey privateKey,byte[] srcBytes) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException{ 
        if(privateKey!=null){ 
            //Cipher负责完成加密或解密工作,基于RSA 
            Cipher cipher = Instance("RSA"); 
            //根据公钥,对Cipher对象进行初始化 
            cipher.init(Cipher.DECRYPT_MODE, privateKey); 
            byte[] resultBytes = cipher.doFinal(srcBytes); 
            return resultBytes; 
        } 
        return null; 
    } 
 
    /**
    * @param args
    * @throws NoSuchAlgorithmException 
    * @throws BadPaddingException 
    * @throws IllegalBlockSizeException 
    * @throws NoSuchPaddingException 
    * @throws InvalidKeyException 
    */ 
    public static void main(String[] args) throws NoSuchAlgorithmException, InvalidKeyException, NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException { 
        EncrypRSA rsa = new EncrypRSA(); 
        String msg = "wqqwqwqewsd1212"; 
        //KeyPairGenerator类用于生成公钥和私钥对,基于RSA算法生成对象 
        KeyPairGenerator keyPairGen = Instance("RSA"); 
        //初始化密钥对生成器,密钥大小为1024位 
        keyPairGen.initialize(1024); 
        //生成一个密钥对,保存在keyPair中 
        KeyPair keyPair = ateKeyPair(); 
        //得到私钥 
        RSAPrivateKey privateKey = (Private();             
        //得到公钥 
        RSAPublicKey publicKey = (Public(); 
         
        //用公钥加密 
        byte[] srcBytes = Bytes(); 
        byte[] resultBytes = pt(publicKey, srcBytes); 
         
        //用私钥解密 
        byte[] decBytes = rsa.decrypt(privateKey, resultBytes); 
         
        System.out.println("明文是:" + msg); 
        System.out.println("加密后是:" + new String(resultBytes)); 
        System.out.println("解密后是:" + new String(decBytes)); 
    } 
 

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。