mysql base64加密解密
时间: 2024-05-25 22:09:12 浏览: 238
MySQL中的base64加密解密可以使用内置的函数来实现。其中,base64_encode()函数用于将字符串进行base64编码,而base64_decode()函数则用于将base64编码的字符串解码还原为原始字符串。
以下是使用MySQL内置函数实现base64加密解密的示例:
- base64加密
```
SELECT TO_BASE64('hello world'); -- 输出:aGVsbG8gd29ybGQ=
```
- base64解密
```
SELECT FROM_BASE64('aGVsbG8gd29ybGQ='); -- 输出:hello world
```
相关问题
mysql 中to_base64(DES_ENCRYPT('要加密的数据','秘钥'))如何进行解密
要解密这个字符串,可以使用以下方法:
1. 使用 mysql 的 `FROM_BASE64()` 函数将加密后的字符串转换为二进制数据。
2. 使用 mysql 的 `DES_DECRYPT()` 函数将二进制数据解密。
3. 将解密后的二进制数据使用 `CONVERT()` 函数转换为字符串。
具体的操作如下所示:
```mysql
SELECT CONVERT(DES_DECRYPT(FROM_BASE64(to_base64(DES_ENCRYPT('要加密的数据', '秘钥')))), CHAR) AS 解密后的数据;
```
其中,`to_base64()` 函数用于将加密后的二进制数据转换为字符串,`FROM_BASE64()` 函数用于将字符串转换为二进制数据,`DES_DECRYPT()` 函数用于解密二进制数据,`CONVERT()` 函数用于将解密后的二进制数据转换为字符串。
在Javaweb项目中进行后端管理员RSA加密登录的具体代码实现,要求使用MySQL数据库,利用ajax接口请求
1. 首先生成RSA密钥对,可以使用java.security包下的KeyPairGenerator类来实现。
```
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(1024);
KeyPair kp = kpg.generateKeyPair();
PrivateKey privateKey = kp.getPrivate();
PublicKey publicKey = kp.getPublic();
```
2. 将生成的公钥存储到数据库中,供前端使用。
```
String publicKeyStr = Base64.getEncoder().encodeToString(publicKey.getEncoded());
// 将公钥存储到数据库中
String sql = "INSERT INTO admin (public_key) VALUES (?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, publicKeyStr);
pstmt.executeUpdate();
```
3. 前端使用公钥对密码进行加密后发送请求到后台。
```
function encryptPassword(password) {
var publicKey = "xxx"; // 从数据库中获取公钥
var encrypt = new JSEncrypt();
encrypt.setPublicKey(publicKey);
return encrypt.encrypt(password);
}
$.ajax({
url: "/login",
type: "POST",
data: {
username: $("#username").val(),
password: encryptPassword($("#password").val())
},
success: function (data) {
// 处理登录结果
}
});
```
4. 后台接收到请求后,使用私钥对密码进行解密,然后进行数据库查询验证。
```
String privateKeyStr = "xxx"; // 从配置文件或其他地方获取私钥
byte[] privateKeyBytes = Base64.getDecoder().decode(privateKeyStr);
PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(privateKeyBytes);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec);
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] passwordBytes = cipher.doFinal(Base64.getDecoder().decode(password));
String sql = "SELECT * FROM admin WHERE username=? AND password=?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, username);
pstmt.setString(2, new String(passwordBytes, StandardCharsets.UTF_8));
ResultSet rs = pstmt.executeQuery();
if (rs.next()) {
// 登录成功
} else {
// 登录失败
}
```
阅读全文