加解密aes

public static String encrypt(String text, String encodingAesKey, String appName) {
    if (encodingAesKey.length() != 43) {
        throw new RuntimeException("SymmetricKey非法");
    } else {
        byte[] aesKey = Base64.decodeBase64(encodingAesKey + "=");
        ApiEncryptKit.ByteGroup byteCollector = new ApiEncryptKit.ByteGroup();
        byte[] randomStrBytes = getRandomStr().getBytes(charSet);
        byte[] textBytes = text.getBytes(charSet);
        byte[] networkBytesOrder = getNetworkBytesOrder(textBytes.length);
        byte[] appNameBytes = appName.getBytes(charSet);
        byteCollector.addBytes(randomStrBytes);
        byteCollector.addBytes(networkBytesOrder);
        byteCollector.addBytes(textBytes);
        byteCollector.addBytes(appNameBytes);
        byte[] padBytes = ApiEncryptKit.PKCS7Encoder.encode(byteCollector.size());
        byteCollector.addBytes(padBytes);
        byte[] unencrypted = byteCollector.toBytes();

        try {
            Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
            SecretKeySpec keySpec = new SecretKeySpec(aesKey, "AES");
            IvParameterSpec iv = new IvParameterSpec(aesKey, 0, 16);
            cipher.init(1, keySpec, iv);
            byte[] encrypted = cipher.doFinal(unencrypted);
            Base64 base64 = new Base64();
            String base64Encrypted = base64.encodeToString(encrypted);
            return base64Encrypted;
        } catch (Exception var17) {
            throw new RuntimeException("aes加密失败",var17);
        }
    }
}

public static String decrypt(String text, String encodingAesKey, String appName) {
    if (encodingAesKey.length() != 43) {
        throw new RuntimeException("SymmetricKey非法");
    } else {
        byte[] aesKey = Base64.decodeBase64(encodingAesKey + "=");

        byte[] original;
        byte[] networkOrder;
        try {
            Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
            SecretKeySpec keySpec = new SecretKeySpec(aesKey, "AES");
            IvParameterSpec iv = new IvParameterSpec(Arrays.copyOfRange(aesKey, 0, 16));
            cipher.init(2, keySpec, iv);
            networkOrder = Base64.decodeBase64(text);
            original = cipher.doFinal(networkOrder);
        } catch (Exception var11) {
            log.info("aes解密发生错误",var11);
            throw new RuntimeException("aes解密失败");
        }

        String content;
        String fromAppName;
        try {
            byte[] bytes = ApiEncryptKit.PKCS7Encoder.decode(original);
            networkOrder = Arrays.copyOfRange(bytes, 16, 20);
            int msgLength = recoverNetworkBytesOrder(networkOrder);
            content = new String(Arrays.copyOfRange(bytes, 20, 20 + msgLength), charSet);
            fromAppName = new String(Arrays.copyOfRange(bytes, 20 + msgLength, bytes.length), charSet);
        } catch (Exception var10) {
            throw new RuntimeException("解密后得到的buffer非法",var10);
        }

        if (!fromAppName.equals(appName)) {
            throw new RuntimeException("appName校验失败");
        } else {
            return content;
        }
    }
}



String v1 = "0f4VyZKuylYB3IDAx3sXCjlg55gnoabU5W9I5KtW309";
String encrypt = ApiEncryptKit.encrypt("13627135947", v1, "123");

String decrypt = ApiEncryptKit.decrypt(encrypt, v1, "123");

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值