• 后端使用aes 加密


    package com.midea.ccs.mobile.tools.impl;

    import org.apache.commons.codec.binary.Hex;

    import javax.crypto.Cipher;
    import javax.crypto.spec.SecretKeySpec;
    import java.security.Key;


    public class AesUtil {
    /**
    * Description: 加密操作 <br>
    *
    * @param data 待加密数据
    * @param key 密钥
    * @return 加解密后的信息
    * @throws Exception <br>
    */
    public static byte[] encrypt(byte[] data, byte[] key)
    throws Exception {
    Key secretKey = new SecretKeySpec(key, "AES");
    Cipher cipher = Cipher.getInstance("AES");
    cipher.init(Cipher.ENCRYPT_MODE, secretKey);
    return cipher.doFinal(data);
    }

    /**
    * Description: 解密操作 <br>
    *
    * @param data 待解密数据
    * @param key 密钥
    * @return 解密后的信息
    * @throws Exception <br>
    */
    public static byte[] decrypt(byte[] data, byte[] key)
    throws Exception {
    Key secretKey = new SecretKeySpec(key, "AES");
    Cipher cipher = Cipher.getInstance("AES");
    cipher.init(Cipher.DECRYPT_MODE, secretKey);
    return cipher.doFinal(data);
    }

    /**
    * Description: 加密操作 <br>
    *
    * @param data 待加密数据
    * @param key 密钥
    * @return 加解密后的信息,16进制
    * @throws Exception <br>
    */
    public static String encryptHex(String data, String key)
    throws Exception {
    byte[] bytes = encrypt(data.getBytes(), key.getBytes());
    return Hex.encodeHexString(bytes);
    }

    /**
    * Description: 解密操作 <br>
    *
    * @param data 待解密数据
    * @param key 密钥
    * @return 解密后的信息,16进制
    * @throws Exception <br>
    */
    public static String decryptHex(String data, String key)
    throws Exception {
    byte[] datas = Hex.decodeHex(data.toCharArray());
    byte[] bytes = decrypt(datas, key.getBytes());
    return new String(bytes, "utf-8");
    }


    public static void main(String[] args) throws Exception {
    //2f3e660c0ff68c9fcec4e1bd511c3d3e
    String md5 = "067d1e0c2512a009";
    String mobile = "15994583505";

    String hex = encryptHex(mobile, md5);

    decryptHex(hex, md5);

    }

    }

  • 相关阅读:
    Django学习笔记第六篇--实战练习二--简易实现登录注册功能demo
    追踪溯源--抓住隐藏在NAT后面的罪犯
    Linux内核态、用户态简介与IntelCPU特权级别--Ring0-3
    Windows2008 IIS配置FTP站点
    .NET RSA解密、签名、验签
    Quartz.NET 入门
    使用Topshelf创建Windows服务
    xcode6 新建项目真机调试无法全屏
    .NET 二维码生成(ThoughtWorks.QRCode)
    iOS手机应用开发原型模板及开发流程
  • 原文地址:https://www.cnblogs.com/zhangzonghua/p/9302211.html
Copyright © 2020-2023  润新知