在我们程序员日常工作中避免不了会接触一下有关于加密算法的需求,所以今天小编带来的是java中AES128对称算法的实现。
话不多少接下来代码搞起来----->
0、准备
首先呢,我们先把jar包准备好
import java.util.Base64; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec;
1、对数据进行加密
private static byte[] encrypt_by_aes(byte[] datas, byte[] key) { return calc_by_aes(Cipher.ENCRYPT_MODE, datas, key); }
这里要说一下 "datas" 是我们需要加密的数据,byte[]字节数组类型。"key"为秘钥,这里秘钥也是byte[]字节数组类型。
如果我们的秘钥是这个样子:
1D926BD75DFC90D25EEE9286FECBEA9R
需要转成这个熊样:
private static final byte[] DEFAULT_KEY = new byte[] {0x1D, (byte) 0x92, 0x6B, (byte) 0xD7, 0x5D, (byte) 0xFC, (byte) 0x90, (byte) 0xD2, 0x5E, (byte) 0xEE, (byte) 0x92, (byte) 0x86, (byte) 0xFE, (byte) 0xCB, (byte) 0xEA, (byte) 0x9R};
好 接下来
private static byte[] calc_by_aes(int mode, byte[] datas, byte[] key) { if (datas == null || key == null || key.length != 16) { return null; } SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); try { Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); cipher.init(mode, keySpec); return cipher.doFinal(datas); } catch (Exception e) { return null; } }
这个是调用的而公共方法
接着需要做数据填充,这里我使用的是PKCS7填充--->
public static final String bytesToHexString(byte[] bArray) { StringBuffer sb = new StringBuffer(bArray.length); String sTemp; for (int i = 0; i < bArray.length; i++) { sTemp = Integer.toHexString(0xFF & bArray[i]); if (sTemp.length() < 2) sb.append(0); sb.append(sTemp.toUpperCase()); } return sb.toString(); }
好,填充完毕后返回的字符串就是我们加密后的密文字符串
至此我们的数据加密就完成了。