对称加密--用同一个密钥,实现对信息的加密和解密.
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条评论
点击登录参与评论