≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 数据库 > MySQL

MySQL双向加密解密方式用法分析

人气:379 时间:2020-07-09

这篇文章主要为大家详细介绍了MySQL双向加密解密方式用法分析,具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随四海网的小编小韵来看看吧!

如果你使用的正是mysql数据库,那么你把密码或者其他敏感重要信息保存在应用程序里的机会就很大。保护这些数据免受黑客或者窥探者的获取是一个令人关注的重要问题,因为您既不能让未经授权的人员使用或者破坏应用程序,同时还要保证您的竞争优势。幸运的是,MySQL带有很多设计用来提供这 种类型安全的加密函数。本文概述了其中的一些函数,并说明了如何使用它们,以及它们能够提供的不同级别的安全。

双向加密

就让我们从最简单的加密开始:双向加密。在这里,一段数据通过一个密钥被加密,只能够由知道这个密钥的人来解密。MySQL有两个函数来支持这种类型的加密,分别叫做ENCODE()和DECODE()。下面是一个简单的实例:

代码如下:


mysql> INSERT INTO users (username, password) 
VALUES ('joe', ENCODE('guessme', 'abracadabra')); 
Query OK, 1 row affected (0.14 sec) 

 

其中,Joe的密码是guessme,它通过密钥abracadabra被加密。要注意的是,加密完的结果是一个二进制字符串,如下所示:

代码如下:


mysql> SELECT * FROM users WHERE username='joe'; 
+----------+----------+ 
| username | password | 
+----------+----------+ 
| joe | ??i??!? | 
+----------+----------+ 
1 row in set (0.02 sec) 
abracadabra这个密钥对于恢复到原始的字符串至关重要。这个密钥必须被传递给DECODE()函数,以获得原始的、未加密的密码。下面就是它的使用方法: 
mysql> SELECT DECODE(password, 'abracadabra') 
FROM users WHERE username='joe'; 
+---------------------------------+ 
| DECODE(password, 'abracadabra') | 
+---------------------------------+ 
| guessme | 
+---------------------------------+ 
1 row in set (0.00 sec) 

 

应该很容易就看到它在Web应用程序里是如何运行的——在验证用户登录的时候,DECODE()会用网站专用的密钥解开保存在数据库里的密码,并和用户输入的内容进行对比。假设您把PHP用作自己的脚本语言,那么可以像下面这样进行查询:

 

代码如下:


<?php 
$query = "SELECT COUNT(*) FROM users WHERE 
username='$inputUser' AND DECODE(password, 
'abracadabra') = '$inputPass'"; 
?> 

 

注意:虽然ENCODE()和DECODE()这两个函数能够满足大多数的要求,但是有的时候您希望使用强度更高的加密手段。在这种情况下,您可以使用AES_ENCRYPT()和AES_DECRYPT()函数,它们的工作方式是相同的,但是加密强度更高。

本文来自:http://www.q1010.com/177/9497-0.html

注:关于MySQL双向加密解密方式用法分析的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:MYSQL

您可能感兴趣的文章

  • MySQL把一个表某个字段的内容复制到另一张表的某个字段的SQL语句写法
  • MySQL5.5与mysq 5.6中禁用innodb引擎的方法
  • MySQL的group_concat函数使用示例
  • MySQL导入sql文件命令和MySQL远程登陆使用分析
  • MySQL子查询的几种常见形式介绍
  • MySQL Hash索引和B-Tree索引的区别
  • MySQL优化之表结构优化的5大建议(数据类型选择讲的很好)
  • MySQL联合查询UNION和Order by同时使用报错问题的解决办法
  • MySQL 强大的trim() 函数
  • MySQL联合查询UNION和UNION ALL的使用介绍
上一篇:MySQL存储过程实例
下一篇:MySQL5.5与mysq 5.6中禁用innodb引擎的方法
热门文章
  • mysql 修改character_set_server为utf-8的简单示例
  • 解决MySQL丢失文件localhost.localdomain.pid、mysql.sock的示例
  • MySQL 数据类型binary和varbinary的简单示例
  • MySQL:reading initial communication packet问题解决方法
  • MySql 表类型MYISAM、InnoDB区别
  • bash: mysql: command not found 的解决方法
  • MYSQL默认用户名ROOT修改方法
  • MySQL 常用命令菜鸟教程
  • MySQL 使用命令行新建用户并授予权限
  • MySql 数据库物理文件存放位置查看示例
  • 最新文章
    • MySQL查看死锁与解除死锁的简单示例
    • MySQL 慢查询的功能实例
    • MySQL查看死锁与去除死锁的简单示例
    • MySQL找出未提交事务的SQL的简单示例
    • MySQL锁阻塞的的简单示例
    • MySQL中的binary类型使用操作的示例
    • SQL优化教程之in与range查询的简单示例
    • MySQL 的 21 个规范、优化最佳实践!
    • MySQL 字符类型大小写敏感的简单示例
    • 解决mybatis-plus分页传入参数后sql where条件没有limit分页信息的问题

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。