当前位置: 首页 > news >正文

MySQL和Java通用加密解密方式

加密方式使用 AES 加密,再转成 Base64。

SQL

-- 加密
update your_table set your_column=to_base64(aes_encrypt(your_column, "password"));-- 解密
select aes_decrypt(from_base64(your_column) ,"password") from your_table;

使用原生

public class AESUtils {/*** AES 加密操作** @param data   待加密内容* @param aesKey 加密的Key* @return 返回Base64转码后的加密数据* @throws Exception*/public static String encrpt(String encrptData, String aesKey) throws Exception {Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");cipher.init(Cipher.ENCRYPT_MODE, getSecretKeySpec(aesKey));byte[] encrypted = cipher.doFinal(encrptData.getBytes());return Base64.encode(encrypted);}/*** AES 解密操作** @param decrptData* @param aesKey* @return 返回解密内容* @throws Exception*/public static String decrpt(String decrptData, String aesKey) throws Exception {Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");cipher.init(Cipher.DECRYPT_MODE, getSecretKeySpec(aesKey));byte[] doFinal = cipher.doFinal(Base64.decode(decrptData));return new String(doFinal);}private static SecretKeySpec getSecretKeySpec(String key) {byte[] keyBytes = Arrays.copyOf(key.getBytes(), 16);return new SecretKeySpec(keyBytes, "AES");}public static void main(String[] args) throws Exception {String aesKey = "1234567890";String encrpt = encrpt("128931739@163.com", aesKey);System.out.println(encrpt);System.out.println(decrpt(encrpt, aesKey)); //解密 加密的数据}
}

使用 Hutool

public class AESUtils {/*** AES 加密操作** @param encodedData 待加密内容* @param aesKey      加密的Key* @return 返回Base64转码后的加密数据* @throws Exception*/public static String encrpt(String encodedData, String aesKey) {return Base64.encode(SecureUtil.aes(getSecretKey(aesKey)).encrypt(encodedData));}/*** AES 解密操作** @param decrptData 待解密内容* @param aesKey     解密的Key* @return 返回解密内容* @throws Exception*/public static String decrpt(String decrptData, String aesKey) {return SecureUtil.aes(getSecretKey(aesKey)).decryptStr(Base64.decode(decrptData));}private static byte[] getSecretKey(String key) {byte[] keyBytes = Arrays.copyOf(key.getBytes(), 16);return SecureUtil.generateKey("AES", keyBytes).getEncoded();}public static void main(String[] args) {String aesKey = "1234567890";String encrpt = encrpt("128931739@163.com", aesKey);System.out.println("-->加密后字符串: " + encrpt);System.out.println("-->解密后字符串: " + decrpt(encrpt, aesKey)); //解密 加密的数据}
}

http://www.lryc.cn/news/254393.html

相关文章:

  • 若依前端APP版使用教程
  • 2023 年工程师不可错过的 AI 主要发展趋势
  • 记录 | 安装地平线工具链install_ai_toolchain.sh出现cython版本问题报错解决
  • Java8流操作
  • vue-socket.io以及原生websocket的使用
  • 谷歌推出功能最强大的大语言模型Gemini;大规模语言模型:从理论到实践
  • Android studio 工程的 module 依赖关系图绘制 、 Android Module 依赖关系的可视化实现
  • Qt之QGraphicsView —— 笔记1.2:将QGraphicsView放置主窗口上,绘制简单图元(附完整源码)
  • linux的权限管理
  • 什么是 performance_schema ?
  • 软件多开助手的创新使用:在同一设备上玩转多个游戏
  • [linux] 输出文本文件的最后一列并去重
  • 新能源车交直流充电解释
  • Failed to connect to gitee.com port 443: Time out 连接超时提示【Bug已完美解决-鸿蒙开发】
  • 【开源】基于Vue+SpringBoot的智慧家政系统
  • javaee实验:文件上传及拦截器的使用
  • 二分查找19(Leetcode540有序数组中的单一元素)-1
  • 字节开源的netPoll底层LinkBuffer设计与实现
  • 《点云进阶》专栏文章目录
  • 二分查找算法-查找最接近的元素Python实现(题目来源dotcpp: 2926)
  • debian11,debian 如何删除虚拟内存,交换分区
  • 智能优化算法应用:基于人工大猩猩部队算法无线传感器网络(WSN)覆盖优化 - 附代码
  • 鼎捷受邀出席“中国制造业产品创新数字化国际峰会”,共话工业软件创新发展
  • 大话数据结构-查找-多路查找树
  • unity 2d 入门 飞翔小鸟 飞翔脚本(五)
  • Linux系统调试课:I2C tools调试工具
  • uniapp中解决swiper高度自适应内容高度
  • Contrast and Generation Make BART a Good Dialogue Emotion Recognizer
  • 图的深度优先搜索(数据结构实训)
  • VUEX使用总结