RSA+AES加解密的测试

package com.example.shirotest.utils;

import com.mysql.cj.util.Base64Decoder;
import org.springframework.util.Base64Utils;
import sun.misc.BASE64Decoder;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.io.IOException;
import java.security.*;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.Base64;

public class testRSA_AES_TEST {

    //AES密钥
    private static final String AESPrivateKey = "I66AndrK+Wrw/XjtBLaiZQ==";

    //RSA公钥
    private static final String RSAPublicKeyString = "MIIBHDANBgkqhkiG9w0BAQEFAAOCAQkAMIIBBAKB/DC7vp77j8MHbzFwqdVTWA1VCtGJxOWpP+SBFTHlsMzYqYtljQHLmuEAyoSZNVYeN+gor3CnfbQKvfcxIgUbfLuQ71ZAVW9FOh8qm0xgADMuEGiIFUuQvkiR+0Qrq1o5vrvLlA5TGZ1AUv4EGsBREJEYdDEjOusgWWcGuYMgJEJhDH7X5NeKdv12r+EGob859Yg5h0NJnZh204pBD8DEg6i9+RQvLIkUrRfz+hWDYeNftM7Y1I7BTH8VjW/A5hsXMvLAnndoiJlGMpeb01u89Jlphgmu7SVHJDSg1nqg07YY4ZGNxNiG4IKfvVp3zJi4BR7JOOwjz2n+d7Xm0QIDAQAB";

    //RSA私钥
    private static final String RSAPrivateKeyString = "MIIEoAIBADANBgkqhkiG9w0BAQEFAASCBIowggSGAgEAAoH8MLu+nvuPwwdvMXCp1VNYDVUK0YnE5ak/5IEVMeWwzNipi2WNAcua4QDKhJk1Vh436CivcKd9tAq99zEiBRt8u5DvVkBVb0U6HyqbTGAAMy4QaIgVS5C+SJH7RCurWjm+u8uUDlMZnUBS/gQawFEQkRh0MSM66yBZZwa5gyAkQmEMftfk14p2/Xav4Qahvzn1iDmHQ0mdmHbTikEPwMSDqL35FC8siRStF/P6FYNh41+0ztjUjsFMfxWNb8DmGxcy8sCed2iImUYyl5vTW7z0mWmGCa7tJUckNKDWeqDTthjhkY3E2Ibggp+9WnfMmLgFHsk47CPPaf53tebRAgMBAAECgfwGq7x1MMRGEx9yahSlYeo8sPZxJmWwdlGLquvGz8U61TGoJjd+FmvV/vC54+r8JdjLS75wMk0vtwS38J7Siiex2S4Z5WaMe7JwD7oAY2fDmbufQ3l+xYp2jp0RgNTM3fiw5jYXG+L2tpZltRQgXThiVDGbhFINW3lBdBcyztRpJfmtb5s17PceVdhyPl8ezHXlIxYquS9p6+c3SoQq2/PPwpWb95IhhbI2oiivwn7qJRjIRK7AVhrTR7ZYHsfcoUDwm3PZoYgyasvvpTtwsWtg/G8ZZN038EnknxKIa2ds7Qqn98+6dZVihPByq/E+b9FrKCivO+PyQ9+kX1ECfnfcUd/PdgQm4TNX4KSgkriALmi2f+LdeVjXveh5uBJXY9HZ1ATrHUze18CUtoddpmjdMdy7cnyKaGIdWMDBMFL1LSYzUyIT393doZwjLILIHDdVJwRAkkvY7W36+46FVxlmI+9XNtg8idlUKkhfXS+Q+TXobHCb1sBmdbqbzQJ+aBXevI9c8l/fxpyEwN6r8WvEn5VtFfX/O9h3ntGLoqp1XwbriwXnidWPIeJhJlr2RhaPdntaVlW7+uG61oSpYqAqcZhhwrMl5OaLYGZUNU3gcoWZ5Y6VYhOsO/2SVxeU6msDHpcEMO+gMlilJTQlfZyBpszFTwbILLlBWpsVAn5wSYKaPWy+Lv5Cb00QbS2Gku7nQjFEg18vD83lgEIlTKFC8uJhSTHF1e4hiDAHWICRNMeFlkWGztNDN2LyEQoIbY/Cfcqf3iaXXw4LjBgi3P0yCR/oJ+XmEG893SbVOa2DKeD4U6gZo30wkFycOFrAOPx+uCL+y7+/tz0LePECfi7uXYYL5k7q58132WvVexXaD8gc6hjS2Ii1bApSVXG9BjsYta/zs5i0kFso5cETlqO3nGxB5lOzSJUwnrwHCRENQtYBbWMKv/Vb9lA7E5ENUjyQ/PlCtxyH3ksWZJucaGriYX+zfBJMmaDZ02zY/GaM4PDCt9yQJEX2Kf+emQJ+SMMYT5EimUOWpxQ8QaytQMnLtR+yTECkGgyyRwMGRpsHge51++QJpl9fGzMdwYBmue3dzXOL6JHwNSIVVnkBv8uDRZYIWqmfNNppARSSii+XfYvFUqLkS9d8s9Wq5ZxStnoWLgdJCYaT7qaLTue6nXanxaDacRKBRnnFyJol";


    public static void main(String[] args) {
        String msg = "www.baidu.com";

        byte[] bytes = aesEncrypt(msg.getBytes());
        System.out.println("AES加密后的数据为:"+ new String(bytes));

        byte[] aesEncrypt = rsaEncrypt(AESPrivateKey.getBytes());
        System.out.println("RSA加密AES密钥产生的结果:"+new String(aesEncrypt));

        byte[] bytes1 = rsaDecrypt(aesEncrypt);
        System.out.println("RSA解密AES密钥结果:" + new String(bytes1));

        byte[] bytes2 = aesDecrypt(bytes, new String(bytes1));
        System.out.println("解密后的数据为:"+new String(bytes2));



    }

    /**
     * AES 加密
     * @param msg
     * @return
     */
    public static byte[] aesEncrypt(byte[] msg){
        try {
            SecretKeySpec secretKeySpec = new SecretKeySpec((new BASE64Decoder()).decodeBuffer(AESPrivateKey), "AES");
            Cipher cipher = Cipher.getInstance("AES");
            cipher.init(Cipher.ENCRYPT_MODE,secretKeySpec);
            byte[] bytes = cipher.doFinal(msg);
            return bytes;
        } catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }

    /**
     * AES解密
     * @param msg
     * @return
     */
    public static byte[] aesDecrypt(byte[] msg,String aesPrivateKey){
        try {
            SecretKeySpec secretKeySpec = new SecretKeySpec((new BASE64Decoder()).decodeBuffer(aesPrivateKey), "AES");
            Cipher cipher = Cipher.getInstance("AES");
            cipher.init(Cipher.DECRYPT_MODE,secretKeySpec);
            byte[] bytes = cipher.doFinal(msg);
            return bytes;
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }

    /**
     * RSA加密
     * @param msg
     * @return
     */
    public static byte[] rsaEncrypt(byte[] msg){
        try {
            X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec((new BASE64Decoder()).decodeBuffer(RSAPublicKeyString));
            KeyFactory keyFactory = KeyFactory.getInstance("RSA");
            PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec);
            Cipher cipher = Cipher.getInstance("RSA");
            cipher.init(Cipher.ENCRYPT_MODE,publicKey);
            byte[] bytes = cipher.doFinal(msg);
            return bytes;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * RSA解密
     * @param msg
     * @return
     */
    public static byte[] rsaDecrypt(byte[] msg){
        try {
            PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec((new BASE64Decoder()).decodeBuffer(RSAPrivateKeyString));
            KeyFactory keyFactory = KeyFactory.getInstance("RSA");
            PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec);
            Cipher cipher = Cipher.getInstance("RSA");
            cipher.init(Cipher.DECRYPT_MODE,privateKey);
            byte[] bytes = cipher.doFinal(msg);
            return bytes;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

}

不想多说话

猜你喜欢

转载自blog.csdn.net/m0_37626203/article/details/86581297