⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aes.java.svn-base

📁 多线程加密聊天室,支持多线程客户端链接服务器端
💻 SVN-BASE
字号:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package mytools;import java.io.*;import java.security.*;import javax.crypto.*;import javax.crypto.spec.SecretKeySpec;/** * * @author DJ尐舞 */public class AES {    private Cipher cipher;    private byte[] key;    SecretKeySpec skeySpec;    /**     * 对AES算法构造函数     */    public AES() {        init();    }    /**     * 初始化AES加密对象     */    public void init() {        this.key = AES.getKey();        skeySpec = new SecretKeySpec(key, "AES");        try {            cipher = Cipher.getInstance("AES");        } catch (NoSuchAlgorithmException ex) {            System.out.println("初始化AES失败:本机上找不到算法AES");        } catch (NoSuchPaddingException ex) {            System.out.println("初始化AES失败");        }    }    /**     * 对数据用AES算法加密     * @param plainText  要加密的字节数组     * @param key  密钥     * @return 加密后的字节数组     */    public byte[] encrypt(byte[] plainText) {        try {            cipher.init(Cipher.ENCRYPT_MODE, skeySpec);            byte[] decryptText = cipher.doFinal(plainText);            return decryptText;        } catch (Exception e) {            e.printStackTrace();            return null;        }    }    /**     * 对AES算法加密的数据解密     * @param cipherText  要解密的字节数组     * @param key  密钥     * @return 解密后的字节数组     */    public byte[] decrypt(byte[] cipherText) throws InvalidKeyException, IllegalBlockSizeException, BadPaddingException {            cipher.init(Cipher.DECRYPT_MODE, skeySpec);            byte[] plainText = cipher.doFinal(cipherText);            return plainText;    }    /**     * 从客户端目录下查找文件skey.dat,从中读取密钥     * @return 返回密钥的字节数组     */    public static byte[] getKey() {        java.io.FileInputStream in = null;        byte[] key = new byte[16];        try {            in = new java.io.FileInputStream("skey.dat");            in.read(key);            in.close();        } catch (IOException ex) {            System.out.println("密钥读出失败");        }//         finally {//            try {//                in.close();//            } catch (IOException ex) {//                System.out.println("文件关闭失败");//            }//        }        return key;    }    /**     * 生成密钥     * @throws java.security.NoSuchAlgorithmException 找不到AES算法     */    public static void generateKey() throws NoSuchAlgorithmException {        //产生密钥        java.io.FileOutputStream out = null;        try {            KeyGenerator kgen;            kgen = KeyGenerator.getInstance("AES");            kgen.init(128);            SecretKey skey = kgen.generateKey();            out = new java.io.FileOutputStream("skey.dat");            out.write(skey.getEncoded());            out.close();            System.out.println("创建密钥成功");        } catch (IOException ex) {            System.out.println("密钥写入文件失败");        } finally {            try {                out.close();            } catch (IOException ex) {                System.out.println("文件关闭失败");            }        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -