mysql双向加密解密方式用法详解

 更新时间:2014年04月16日 10:38:57   作者:  
这篇文章主要介绍了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()函数,它们的工作方式是相同的,但是加密强度更高。

相关文章

  • MySQL 索引知识汇总

    MySQL 索引知识汇总

    这篇文章主要介绍了MySQL 索引使用方法的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • MySQL重定位数据目录的方法

    MySQL重定位数据目录的方法

    这篇文章主要介绍了MySQL重定位数据目录的实现方法,分析了重定位MySQL数据目录的实现原理与技巧,具有一定的参考借鉴价值,需要的朋友可以参考下
    2014-12-12
  • MySQL如何创建触发器(CREATE TRIGGER)

    MySQL如何创建触发器(CREATE TRIGGER)

    这篇文章主要介绍了MySQL如何创建触发器(CREATE TRIGGER)问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • MySql登录时闪退的快速解决办法

    MySql登录时闪退的快速解决办法

    这篇文章主要介绍了MySql登录时闪退的快速解决办法的相关资料,需要的朋友可以参考下
    2016-08-08
  • 银河麒麟V10安装MySQL8.0.28并实现远程访问

    银河麒麟V10安装MySQL8.0.28并实现远程访问

    这篇文章主要介绍了银河麒麟V10安装MySQL8028的图文教程,并详细介绍了远程访问的实现方法,本文通过图文命令给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • mysql 服务意外停止1067错误解决办法小结

    mysql 服务意外停止1067错误解决办法小结

    今天在配置服务器时安装mysql5.5总是无法安装,查看日志错误提示为1067错误,下面来看我的解决办法
    2012-11-11
  • sql format()函数的用法及简单实例

    sql format()函数的用法及简单实例

    下面小编就为大家带来一篇sql format函数()的用法及简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • MySQL中文乱码问题的解决

    MySQL中文乱码问题的解决

    MySQL中文乱码问题的解决...
    2006-12-12
  • MySql存储表情报错的排查解决

    MySql存储表情报错的排查解决

    随着互联网的发展,产生了许多新类型的字符,例如emoji这种类型的符号,也就是我们通常在聊天时发的小黄脸表情,下面这篇文章主要给大家介绍了关于MySql存储表情报错的排查解决,需要的朋友可以参考下
    2022-07-07
  • mysql常见的错误提示问题处理小结

    mysql常见的错误提示问题处理小结

    本文总结了在使用mysql过程中经常遇到的3种错误提示(error1067,error1061,error1045)的问题的处理方法,都是本人在实际应用中处理检验过的,希望对大家有所帮助
    2014-08-08

最新评论