📄 aes.java.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 + -