成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

aes加密

package com.zyhao.openec.util;

創(chuàng)新互聯建站服務項目包括新賓網站建設、新賓網站制作、新賓網頁制作以及新賓網絡營銷策劃等。多年來,我們專注于互聯網行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯網行業(yè)的解決方案,新賓網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到新賓省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.security.InvalidKeyException;

import java.security.NoSuchAlgorithmException;

import java.security.SecureRandom;

import javax.crypto.BadPaddingException;

import javax.crypto.Cipher;

import javax.crypto.IllegalBlockSizeException;

import javax.crypto.KeyGenerator;

import javax.crypto.NoSuchPaddingException;

import javax.crypto.SecretKey;

import javax.crypto.spec.SecretKeySpec;

public class MainTest {

    //AES:高級加密標準,新一代標準,加密速度更快,安全性更高(不用說優(yōu)先選擇)

public static void main(String[] args) throws Exception {

String aesKey = getKey();

System.out.println(aesKey);

//        //加密  

String oriString = "我是加密的原文:hello world|hi!";

        byte[] oriText = oriString.getBytes(); 

        byte[] be = getAESEncode(hexStringToBytes(aesKey),oriText); 

        String encodeString = byteToHexString(be);

        System.out.println(encodeString);

        //解密  

        byte[] encodeByte=hexStringToBytes(encodeString);

        byte[] bd = getAESDecode(hexStringToBytes(aesKey),encodeByte); 

        System.out.println(new String(bd)); 

    }  

  

    /** 

     * AES生成密鑰 

     * 自動生成AES128位密鑰 

     * 傳入保存密鑰文件路徑 

     * filePath 表示文件存儲路徑加文件名;例如d:\aes.txt 

     * @throws NoSuchAlgorithmException  

     * @throws IOException  

     */  

    public static byte[] getAutoCreateAESKey() throws NoSuchAlgorithmException, IOException{  

        KeyGenerator kg = KeyGenerator.getInstance("AES");  

        kg.init(128);//要生成多少位,只需要修改這里即可128, 192或256  

        SecretKey sk = kg.generateKey();  

        byte[] b = sk.getEncoded();  

        return b;

    }  

      

    /** 

     * 加密 

     * 使用對稱密鑰進行加密 

     * keyFilePath 密鑰存放路徑 

     * text 要加密的字節(jié)數組 

     * 加密后返回一個字節(jié)數組 

     * @throws IOException  

     * @throws NoSuchPaddingException  

     * @throws NoSuchAlgorithmException  

     * @throws InvalidKeyException  

     * @throws BadPaddingException  

     * @throws IllegalBlockSizeException  

     */  

    public static byte[] getAESEncode(byte[] key,byte[] text) throws IOException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException{  

        SecretKeySpec sKeySpec = new SecretKeySpec(key, "AES");  

        Cipher cipher = Cipher.getInstance("AES");  

        cipher.init(Cipher.ENCRYPT_MODE, sKeySpec);  

        byte[] bjiamihou = cipher.doFinal(text);  

        return bjiamihou;  

    }  

      

    /** 

     * 解密 

     * 使用對稱密鑰進行解密 

     * keyFilePath 密鑰存放路徑 

     * text 要解密的字節(jié)數組 

     * 解密后返回一個字節(jié)數組 

     * @throws IOException  

     * @throws NoSuchPaddingException  

     * @throws NoSuchAlgorithmException  

     * @throws InvalidKeyException  

     * @throws BadPaddingException  

     * @throws IllegalBlockSizeException  

     */  

    public static byte[] getAESDecode(byte[] key,byte[] text) throws IOException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException{  

        SecretKeySpec sKeySpec = new SecretKeySpec(key, "AES");  

        Cipher cipher = Cipher.getInstance("AES");  

        cipher.init(Cipher.DECRYPT_MODE, sKeySpec);  

        byte[] bjiemihou = cipher.doFinal(text);  

        return bjiemihou;  

    } 

  /**

   * 隨機生成秘鑰

   */

    public static String getKey() {

   try {

   KeyGenerator kg = KeyGenerator.getInstance("AES");

   kg.init(128);

   //要生成多少位,只需要修改這里即可128, 192或256

   SecretKey sk = kg.generateKey();

   byte[] b = sk.getEncoded();

   String s = byteToHexString(b);

   System.out.println(s);

   System.out.println("十六進制密鑰長度為"+s.length());

   System.out.println("二進制密鑰的長度為"+s.length()*4);

   return s;

}catch (NoSuchAlgorithmException e) {

   e.printStackTrace();

   System.out.println("沒有此算法。");

   }

        return null;

    }

//        /**

//     * 使用指定的字符串生成秘鑰

//     */

//    public static void getKeyByPass() {

//     //生成秘鑰

//     String password="testkey";

//     try {

//        KeyGenerator kg = KeyGenerator.getInstance("AES");

//        // kg.init(128);//要生成多少位,只需要修改這里即可128, 192或256

//        //SecureRandom是生成安全隨機數序列,password.getBytes()是種子,只要種子相同,序列就一樣,所以生成的秘鑰就一樣。

//        kg.init(128, new SecureRandom(password.getBytes()));

//        SecretKey sk = kg.generateKey();

//        byte[] b = sk.getEncoded();

//        String s = byteToHexString(b);

//        System.out.println(s);

//        System.out.println("十六進制密鑰長度為"+s.length());

//        System.out.println("二進制密鑰的長度為"+s.length()*4);

//     }catch (NoSuchAlgorithmException e) {

//        e.printStackTrace();

//        System.out.println("沒有此算法。");

//        }

//     }

/**

* byte數組轉化為16進制字符串

* @param bytes

* @return

*/

    public static String byteToHexString(byte[] bytes) {

   StringBuffer sb = new StringBuffer();

   for (int i = 0; i < bytes.length; i++) {

       String strHex=Integer.toHexString(bytes[i]);

       if(strHex.length() > 3) {

           sb.append(strHex.substring(6));

       } else {

           if(strHex.length() < 2) {

               sb.append("0" + strHex);

           } else {

               sb.append(strHex);

           }

       }

   }

   return sb.toString();

}

    /**  

     * Convert hex string to byte[]  

     * @param hexString the hex string  

     * @return byte[]  

     */  

    public static byte[] hexStringToBytes(String hexString) {   

        if (hexString == null || hexString.equals("")) {   

            return null;   

        }   

        hexString = hexString.toUpperCase();   

        int length = hexString.length() / 2;   

        char[] hexChars = hexString.toCharArray();   

        byte[] d = new byte[length];   

        for (int i = 0; i < length; i++) {   

            int pos = i * 2;   

            d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));   

        }   

        return d;   

    } 

    /**  

     * Convert char to byte  

     * @param c char  

     * @return byte  

     */  

     private static byte charToByte(char c) {   

        return (byte) "0123456789ABCDEF".indexOf(c);   

    }

}

網頁標題:aes加密
文章URL:http://jinyejixie.com/article32/jjpepc.html

成都網站建設公司_創(chuàng)新互聯,為您提供品牌網站設計、網站導航、搜索引擎優(yōu)化、面包屑導航、定制開發(fā)網站建設

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

小程序開發(fā)
英吉沙县| 上饶县| 湘西| 高密市| 桑植县| 莎车县| 镇巴县| 宝鸡市| 鹿邑县| 新乡县| 东台市| 军事| 开原市| 南和县| 白朗县| 济阳县| 桃园县| 进贤县| 额敏县| 三门县| 米脂县| 汤原县| 浪卡子县| 靖宇县| 高安市| 广安市| 故城县| 潢川县| 江北区| 顺义区| 藁城市| 玛多县| 牟定县| 临城县| 阜城县| 城市| 阿克陶县| 襄汾县| 阿图什市| 舟曲县| 红安县|