AES高级加密标准加密

ASE加密和DES加密的区别在于AES密匙传入必须是16位字符长度而DES密匙必须是8位字符长度,同样最后8个byte位是效验码.

如果需要实现其cbc加密模式的话,需要添加另外几步.使用注释的地方就是添加cbc加密后添加和修改的方法

//加密算法:"algorithm/mode/padding"  "算法/工作模式/填充模式"
//如果要实现这个cbc模式,能加强安全性,并且IvParameterSpec()中的参数可以传任意字符串

public static final String AES= "AES";

//public static final String AES2 = "AES/CBC/PKCS5Padding";

public static final String key ="1234567812345678"; 
public static void main(String[] args) throws Exception{
String input = "这是加密";
//String key = ;
//加密
byte[]  mEncrypt = encrypt(input,key);
//解密 
byte[] mDerypt = derypt(mEncrypt,key);
//打印解密
System.out.println(new String(mDerypt));
}


private static byte[] derypt(byte[] mEncrypt, String key) throws Exception {
SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), AES);

Cipher cipher = Cipher.getInstance(AES);

//IvParameterSpec iv = new IvParameterSpec(key.getBytes());

//Cipher cipher = Cipher.getInstance(AES2);

cipher.init(Cipher.DECRYPT_MODE, keySpec)


//cipher.init(Cipher.DECRYPT_MODE, keySpec,iv);;

byte[] bs = cipher.doFinal(mEncrypt);
return bs;
}


private static byte[] encrypt(String input, String key) throws Exception{


SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), AES);
//获取加密对象

Cipher cipher = Cipher.getInstance(AES);

//Cipher cipher = Cipher.getInstance(AES2)

//IvParameterSpec iv = new IvParameterSpec(key.getBytes());

//初始化对象

cipher.init(Cipher.ENCRYPT_MODE, keySpec);

;//cipher.init(Cipher.ENCRYPT_MODE, keySpec,iv);

//进行加密
byte[] bs = cipher.doFinal(input.getBytes());
System.out.println("加密后:"+new String(bs));
return bs;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值