JavaAES128对称加密算法实现

JavaAES128对称加密算法实现

在我们程序员日常工作中避免不了会接触一下有关于加密算法的需求,所以今天小编带来的是java中AES128对称算法的实现。
话不多少接下来代码搞起来----->

0、准备
首先呢,我们先把jar包准备好

import java.util.Base64;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;

1、对数据进行加密

public static String encrypt_by_aes(String datas) {
        return Base64.getEncoder().encodeToString(encrypt_by_aes(datas.getBytes(), DEFAULT_KEY));
}

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();
}

最后补充一下,解密:

public static String decrypt_by_aes(String datas) {
        return new String(decrypt_by_aes(Base64.getDecoder().decode(datas), DEFAULT_KEY));
}

private static byte[] decrypt_by_aes(byte[] datas, byte[] key) {
        return calc_by_aes(Cipher.DECRYPT_MODE, datas, key);
}

好,填充完毕后返回的字符串就是我们加密后的密文字符串
至此我们的数据加密就完成了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值