欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

带偏移量的AES加密工具

发布时间:2024/7/5 编程问答 17 豆豆
生活随笔 收集整理的这篇文章主要介绍了 带偏移量的AES加密工具 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

 自定义的一个对称加密工具类AESUtil.java

public static final String ENCRYPTION_ALGORITHM = "AES";public static final String CIPHER_PARAM = "AES/CBC/PKCS5Padding";private static final String DEFAULT_KEY_AND_IV = "1234567890ABCDEF";//带偏移量的密钥和偏移量似乎是固定16位长度的private static AESUtil instance = null;/** 偏移量 **/private static IvParameterSpec iv;/** 密钥 **/private static SecretKeySpec key;/*** @Title: getInstance* @Description: 单例AES加密工具,使用默认的密钥以及偏移量* @return AESUtil* @author hanzhiyong* @date 2019-4-26下午4:51:12*/public static AESUtil getInstance() {if (instance == null) {instance = new AESUtil(DEFAULT_KEY_AND_IV);}return instance;}/*** @Title:AESUtil* @Description:自定义偏移量构造AES加密工具,使用默认的KEY* @param ivParameter 原始偏移量字符串*/public AESUtil(String ivParameter) {iv = new IvParameterSpec(ivParameter.getBytes());key = new SecretKeySpec(DEFAULT_KEY_AND_IV.getBytes(), ENCRYPTION_ALGORITHM);}/*** @Title:AESUtil* @Description:自定义偏移量和密钥构造AES加密工具* @param secretKey 原始密钥字符串* @param ivParameter 原始偏移量字符串*/public AESUtil(String secretKey, String ivParameter) {iv = new IvParameterSpec(ivParameter.getBytes());key = new SecretKeySpec(secretKey.getBytes(), ENCRYPTION_ALGORITHM);}/*** 取得密钥* * @throws Exception*/public static String getKey() {Base64 base64 = new Base64();System.out.println("密钥String:" + new String(key.getEncoded()));return base64.encodeToString(key.getEncoded());}/*** 取得偏移量*/public static String getIv() throws Exception {Base64 base64 = new Base64();System.out.println("偏移量String:" + new String(iv.getIV()));return base64.encodeToString(iv.getIV());}/*** @Title: encrypt* @Description: AES加密* @param enString 用来加密的明文* @throws Exception* @return String 加密后密文* @author hanzhiyong* @date 2019-4-26下午3:57:17*/public String encrypt(String enString) throws Exception {Base64 base64 = new Base64();Cipher cipher = Cipher.getInstance(CIPHER_PARAM);cipher.init(Cipher.ENCRYPT_MODE, key, iv);byte[] encrypted = cipher.doFinal(enString.getBytes("utf-8"));return base64.encodeToString(encrypted);}/*** @Title: decrypt* @Description: AES解密* @param deString 用来解密的密文* @throws Exception* @return String 解密后的明文* @author hanzhiyong* @date 2019-4-26下午3:58:06*/public String decrypt(String deString) throws Exception {try {Base64 base64 = new Base64();Cipher cipher = Cipher.getInstance(CIPHER_PARAM);cipher.init(Cipher.DECRYPT_MODE, key, iv);byte[] decrypted = base64.decode(deString);byte[] original = cipher.doFinal(decrypted);return new String(original, "utf-8");} catch (Exception ex) {return null;}}/*** @Title: main* @Description: 加密解密测试用例* @param args* @throws Exception* @return void* @author hanzhiyong* @date 2019-4-23下午6:41:16*/@Deprecatedpublic static void main(String args[]) throws Exception {String sourceString = "测试用来加密的数据";System.out.println("sourceString加密前: " + sourceString);System.out.println("=========================单例的加密工具=========================");System.out.println("base64加密后密钥:" + AESUtil.getInstance().getKey());System.out.println("base64加密后偏移量:" + AESUtil.getInstance().getIv()); System.out.println("加密后sourceString: " + AESUtil.getInstance().encrypt(sourceString));System.out.println("解密后sourceString: " + AESUtil.getInstance().decrypt(AESUtil.getInstance().encrypt(sourceString)));AESUtil aesUtil = new AESUtil("0123456789111111");System.out.println("=========================自定义偏移量的工具=========================");System.out.println("base64加密后密钥:" + aesUtil.getKey());System.out.println("base64加密后偏移量:" + aesUtil.getIv());System.out.println("加密后sourceString: " + aesUtil.encrypt(sourceString));System.out.println("解密后sourceString: " + aesUtil.decrypt(aesUtil.encrypt(sourceString)));}

 

转载于:https://www.cnblogs.com/hanzhiyong/p/10775954.html

总结

以上是生活随笔为你收集整理的带偏移量的AES加密工具的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。