首页 > 数据库 >AES java加密与MySql加密算法一致

AES java加密与MySql加密算法一致

时间:2023-12-05 10:46:19浏览次数:23  
标签:AES 加密 String ciphertext Cipher MySql cipher 加密算法

1.背景

数据库加密与java程序加密算法保持一致,统一采用AES加密算法。

2. java 代码加密

 1 package com.pacific.permission.test;
 2 
 3 import javax.crypto.Cipher;
 4 import javax.crypto.spec.SecretKeySpec;
 5 import java.util.Base64;
 6 
 7 /**
 8  * @author luzhiming
 9  * @desc AES 加解密工具类
10  */
11 public class SymmetricEncryptionExample {
12 
13     /**
14      * 加密算法
15      */
16     private static final String ALGORITHM = "AES";
17 
18     /**
19      * 加密密钥
20      */
21     private static final String KEY = "v2uU!Sd3XT5LeVU$";
22 
23 
24     /**
25      * 加密
26      *
27      * @param plaintext
28      * @return
29      * @throws Exception
30      */
31     public static String encrypt(String plaintext) throws Exception {
32         SecretKeySpec secretKeySpec = new SecretKeySpec(KEY.getBytes(), ALGORITHM);
33         Cipher cipher = Cipher.getInstance(ALGORITHM);
34         cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
35         byte[] encryptedBytes = cipher.doFinal(plaintext.getBytes());
36         return Base64.getEncoder().encodeToString(encryptedBytes);
37     }
38 
39     /**
40      * 解密
41      *
42      * @param ciphertext
43      * @return
44      * @throws Exception
45      */
46     public static String decrypt(String ciphertext) throws Exception {
47         SecretKeySpec secretKeySpec = new SecretKeySpec(KEY.getBytes(), ALGORITHM);
48         Cipher cipher = Cipher.getInstance(ALGORITHM);
49         cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
50         byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(ciphertext));
51         return new String(decryptedBytes);
52     }
53 
54     public static void main(String[] args) throws Exception {
55         String plaintext = "%¥#@上海市浦东新区陆家嘴东方明珠-/。,";
56         String ciphertext = encrypt(plaintext);
57         System.out.println("Ciphertext: " + ciphertext);
58         String decryptedText = decrypt(ciphertext);
59         System.out.println("Decrypted Text: " + decryptedText);
60     }
61 }

程序运行结果:

### 加密结果 
Ciphertext: 6SrQkpMGYRMtYIYahyAOGi0lzAWUnXTFJ8q74PHzR0eJbmEGCs5ZVBA+QfW2md3q1CgyIckKqzMKxGNepPtd9g== ### 解密结果
Decrypted Text: %¥#@上海市浦东新区陆家嘴东方明珠-/。,

3.数据库加密

数据库加密语法如下

SELECT to_base64(aes_encrypt('%¥#@上海市浦东新区陆家嘴东方明珠-/。,','v2uU!Sd3XT5LeVU$'));

数据库加密结果:

6SrQkpMGYRMtYIYahyAOGi0lzAWUnXTFJ8q74PHzR0eJbmEGCs5ZVBA+QfW2md3q1CgyIckKqzMKxGNepPtd9g==

数据库解密语法如下:

SELECT AES_DECRYPT(from_base64('6SrQkpMGYRMtYIYahyAOGi0lzAWUnXTFJ8q74PHzR0eJbmEGCs5ZVBA+QfW2md3q1CgyIckKqzMKxGNepPtd9g=='),'v2uU!Sd3XT5LeVU$'); 

数据库解密结果:

1 %¥#@上海市浦东新区陆家嘴东方明珠-/。,

 

标签:AES,加密,String,ciphertext,Cipher,MySql,cipher,加密算法
From: https://www.cnblogs.com/ming-blogs/p/17876666.html

相关文章

  • 使用mysqlbinlog恢复数据库(逆向或正向都可以)
    我确实喜欢写一些不一样的东西。如果我们在网上搜索“mysql恢复数据库”、“使用mysqlbinlog恢复数据库”、“mysql使用binlog恢复被删除的表”等,一般可以搜索到很多,但是仔细分析会发现,这许多的基本都在讲几件事:1、查看是否已开启在线日志,如果没有开启就开启2、查看日志文件位置3......
  • MySql体系结构
    1、MySql的架构——单进程,多线程 2、Client与Service的连接方式:1)TCP长连接,也是JDBC的本质 2)UnixSocket 注:1)JDBC是JavaDataBaseConnectivity的缩写,它是Java程序访问数据库的标准接口。使用JDBC的好处是:各......
  • 4.1 配置Mysql与注册登录模块(上)
    点击查看sql代码createdatabasekob;usekob;createtableuser(idint,usernamevarchar(100),passwordvarchar(100));mysql>showtables;+---------------+|Tables_in_kob|+---------------+|user|+---------------+1rowinset(0.00sec)......
  • mysql8.1 安装
    1、下载8.1.0 2、创建目录,并解压#cd/usr/local#mkdirmysql8#cdmysql8#wgethttp...#tar-xvfmysql-8.1.0-1.el8.x86_64.rpm-bundle.tar 3、安装mysql安装时,只要安装6个包就行,因为有依赖关系,必须按照顺序安装:#rpm-ivhmysql-community-common-8.1.0-1.el8.x......
  • MySQL 配置选项和变量间的关系
    MySQL变量MySQL中的变量主要分为两大类,用户变量和系统变量。1、用户变量用户变量是用户自定义的变量,用户变量以@符号开头,通过set或者select可以给用户变量赋值。用户变量是属于会话级别的变量,变量的值只在当前会话中有效,当会话结束时,这些变量的值就会丢失。例如:SET@myVar......
  • 虚拟机mysql
    importjava.sql.*;publicclassMysqltest{staticfinalStringDRIVER="com.mysql.jdbc.Driver";staticfinalStringDB="jdbc:mysql://192.168.88.161:3306/bigfly";//DatabaseauthstaticfinalStringUSER="root";......
  • python连接mysql数据库
    说明:1.如果你使用的是其他数据库,例如PostgreSQL,你可以使用psycopg2库来连接和获取数据库数据。使用方法类似,只需要根据你的实际情况修改连接参数和SQL语句即可。2.首先确保本地数据库可以查询到数据,比如:若没有登陆SVN,本地数据库无法查询数据,那么python代码也会执行失败 一、......
  • MySQL系列之读写分离架构——Atlas介绍、安装配置、Atlas功能测试、生产用户要求、Atl
    文章目录1.Atlas介绍2.安装配置3.Atlas功能测试4.生产用户要求5.Atlas基本管理6.自动分表7.关于读写分离建议1.Atlas介绍Atlas是由Qihoo360,Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它是在mysql-proxy0.8.2版本的基础上,对其......
  • mysql和Oracle 查询某个时间之内的数据
    查询最近一个月的数据mysqlSELECTid,title,endtimefromclassroomwhereyears=2022anddate_sub(CURDATE(),interval1month)<endtime;DATE_SUB()函数从日期减去指定的时间间隔,本文是从当前时间减去一个月。CURDATE()函数表示当前年月日,NOW()函数表示当前年月......
  • MySQL选择题(四) 事件/触发器
    单选在MySQL中,关于触发器,以下说法正确的是:a.可以对临时表创建触发器b.对INFORMATION_SCHEMA或performance_schema中的表,可以创建触发器c.对于InnoDB表,即使触发器中的语句执行失败,当在触发操作是执行后执行语句时,作为触发条件的SQL也会成功执行。d.对于同一个表,可以定义......