对称加密--用同一个密钥,实现对信息的加密和解密.
AES--Advanced Encryption Standard 是一种区块加密的标准.
ECB--Electronic CodeBook 是一种加密模式 将需要加密的信息分成若干块,分别对每块信息进行独立加密
PKCS5Padding--一种填充模式,数据块的大小为8位,不足自动补足
加密代码:
public class Secret { //data需要加密的数据 key密钥 密钥可以是任意的字符串 public String encrypt(String data,String key) { try { //密钥拆分成字节数组 byte[] keyBytes = key.getBytes(); //加密字符串拆分成字节数组 byte[] dataBytes = data.getBytes(); //创建加密的对象 AES加密的算法 ECB工作模式 填充模式 Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); //创建密钥对象 SecretKey secretKey = new SecretKeySpec(keyBytes,"AES"); //设置加密模式 cipher.init(Cipher.ENCRYPT_MODE, secretKey); //加密 byte[] dataSecr = cipher.doFinal(dataBytes); //字节数组经过Base64编码成为字符串 String dataSec = Base64.getEncoder().encodeToString(dataSecr); return dataSec; } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (NoSuchPaddingException e) { e.printStackTrace(); } catch (IllegalBlockSizeException e) { e.printStackTrace(); } catch (BadPaddingException e) { e.printStackTrace(); } catch (InvalidKeyException e) { e.printStackTrace(); } return null; } }
调用加密:
Secret secret = new Secret(); String data = "wanmait 做最负责人的教育";//原字符串 String key = "abcdefghijklmnop";//16位密钥 String dataSec = secret.encrypt(data,key);//加密 返回加密字符串 System.out.println(dataSec);
加密结果:
7bszSkmxi5I2dF+zlWqONDBtKJbtFQqyUY3Fb9M62hmOZM6HPxdNuyQj/NgUWA4V
解密代码:
public class Secret { public String decrypt(String dataSec,String key) { //密码通过Base64解密成数组 byte[] dataBytes = Base64.getDecoder().decode(dataSec); //密钥拆分成字节数组 byte[] keyBytes = key.getBytes(); try { Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); //创建解密对象 SecretKey secretKey = new SecretKeySpec(keyBytes,"AES"); //创建密钥对象 //设置界面模式 cipher.init(Cipher.DECRYPT_MODE,secretKey); //解密 byte[] data = cipher.doFinal(dataBytes); String datas = new String(data); return datas; } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (NoSuchPaddingException e) { e.printStackTrace(); } catch (InvalidKeyException e) { e.printStackTrace(); } catch (IllegalBlockSizeException e) { e.printStackTrace(); } catch (BadPaddingException e) { e.printStackTrace(); } return null; } }
调用解密:
Secret secret = new Secret(); String dataSec = "7bszSkmxi5I2dF+zlWqONDBtKJbtFQqyUY3Fb9M62hmOZM6HPxdNuyQj/NgUWA4V";//加密的字符串 String key = "abcdefghijklmnop";//16位密钥 String data = secret.decrypt(dataSec,key); System.out.println(data);
解密结果:
wanmait 做最负责人的教育
0条评论
点击登录参与评论