哈希加密

如果数据库保存了敏感的数据,如银行卡密码,客户信息等,你可能想将这些数据以加密的形式保存在数据库中。这样即使有人进入了你的数据库,并看到了这些数据,也很难获得其中的真实信息。

在应用程序的大量信息中,也许你只想交很小的一部分进行加密,如用户的密码等。这些密码不应该以明文的形式保存,它们应该以加密的形式保存在数据库中。一般情况下,大多数系统,这其中包括MySQL本身都是使用哈希算法对敏感数据进行加密的。

哈希加密是单向加密,也就是说,被加密的字符串是无法得到原字符串的。这种方法使用很有限,一般只使用在密码验证或其它需要验证的地方。在比较时并不是将加密字符串进行解密,而是将输入的字符串也使用同样的方法进行加密,再和数据库中的加密字符串进行比较。这样即使知道了算法并得到了加密字符串,也无法还原最初的字符串。银行卡密码就是采用的这种方式进行加密。

MySQL提供了4个函数用于哈希加密:PASSWORD, ENCRYPT, SHA1和MD5。下面让我们试一试这4个函数,看看会得到什么结果。我们以加密字符串"pa55word"为例进行说明:

SELECT MD5('pa55word');

+----------------------------------+

| MD5('pa55word') |

+----------------------------------+

| a17a41337551d6542fd005e18b43afd4 |

+----------------------------------+

1 row in set (0.13 sec)

下面是PASSWORD函数

SELECT PASSWORD('pa55word');

+----------------------+

| PASSWORD('pa55word') |

+----------------------+

| 1d35c6556b8cab45 |

+----------------------+

1 row in set (0.00 sec)

下面是ENCRYPT函数

SELECT ENCRYPT('pa55word');

+---------------------+

| ENCRYPT('pa55word') |

+---------------------+

| up2Ecb0Hdj25A |

+---------------------+

1 row in set (0.17 sec)

上面的每个函数都返回了一个加密后的字符串。为了区分加密字符串的大小写,最好在使用ENCRYPT生成加密字符串时,将这个字段定义成CHAR BINARY类型。

上面列举了3种加密的方法,但我认为使用MD5加密是最好的。这是因为这样做可以将明文密码显示在处理列表中或是查询日志中,这样便于跟踪。如下面的INSERT语句使用插入了一条记录,其中的密码使用了MD5进行加密:

INSERT INTO table1 (user, pw) VALUE ('user1', MD5('password1') )

可以通过如下的语句进行密码验证:

SELECT * FROM table1 WHERE user = 'user1' AND pw = MD5('password1')

哈希加密方法可以很好地对密码进行加密,使用了这种方法加密,密码将无法 恢复成明文。

哈希加密:MD5()相关推荐

  1. (转)angular进行md5加密 base64加密 哈希加密

    原文地址:http://blog.csdn.net/liangsjss2011/article/details/58585739  (转) 引入文件encrypt.js 注入模块 var Diagno ...

  2. Java实现MD5加密和文件校验

    MD5简介: MD5的全称:Message-Digest Algorithm 5(信息-摘要算法5) MD5的加密方式是一种哈希加密.一些主流的编程语言都已经实现了MD5的加密,所以如果你的程序或是系 ...

  3. Windows自带渗透工具Certutil介绍(免杀、哈希计算、md5、sha256、下载文件、base64编码)

    目录 Certutil 环境 编码 解码 散列 下载 系统错误代码 使用Certutil进行渗透测试 提交恶意可执行文件 提交恶意 DLL 编码(免杀) 有效载荷可以被编码或加密,以避免被检测(免杀) ...

  4. md5加密校验 java_Java实现MD5加密和文件校验

    MD5简介: MD5的全称:Message-Digest Algorithm 5(信息-摘要算法5) MD5的加密方式是一种哈希加密.一些主流的编程语言都已经实现了MD5的加密,所以如果你的程序或是系 ...

  5. python中md5加密的实现(hashlib)

    MD5消息摘要算法:(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传 ...

  6. python3 中的 md5 加密

    转载申明:https://blog.csdn.net/m0_38080253/article/details/78838489 在python3的标准库中,已经移除了md5,而关于hash加密算法都放 ...

  7. python3 的 md5加密

    在python3的标准库中,已经移除了md5,而关于hash加密算法都放在hashlib这个标准库中,如SHA1.SHA224.SHA256.SHA384.SHA512和MD5算法等. 另:在网上找关 ...

  8. python破解md5_python怎么使用md5加密解密

    python采用hashlib这个标准库实现MD5加密解密.方法是:1.updata传数据:2.利用hexdigest进行16进制转换: update(arg)传入arg对象来更新hash的对象.必须 ...

  9. buuctf 还原大师 (md5爆破)

    打开看到这个,就是通过现在已有的信息,将原文中问好部分用字母代替,每个都用哈希加密一遍,然后对照题目所给元素E903,进行一次次遍历,最后得到完全匹配的md5值,就是本题的flag. 通过python ...

最新文章

  1. linux c 文件键盘写入,linux - C非阻塞键盘输入
  2. 独家 | 主成分分析用于可视化(附链接)
  3. 数据库授予用户增删改查的权限的语句_软件测试之浅谈数据库技术概述
  4. Java微框架Spring Boot 运行原理深入解读
  5. 机器学习——人工神经网络之发展历史(神经元数学模型、感知器算法)
  6. 【leetcode】16 3Sum Closest
  7. 全国计算机考试真考题库4,全国计算机等级考试无纸化真考题库试卷二级C--(4)资料.docx...
  8. 公众号点击图片变成另一张_公众号互动内容:小众潮流or下一个风口?| 新榜观察...
  9. 【体系结构】shared pool的个人理解
  10. 网络技术沙龙:主题:数据库优化、CDN、集群负载均衡(1.9日技术聚会召集)
  11. mysql 5.6的安装
  12. 【鱼眼镜头7】如何利用鱼眼镜头测距
  13. 堆区和方法区的小认识
  14. 关于attachEvent与addEventListener事件绑定兼容问题
  15. 饼图-图例标记及文字的设置
  16. 解决LPC1343在Protues8.4不能仿真问题:ode U1_GND not found whilst binding pin V- of U1_U5_R1_ADC#0000!
  17. loadRunner之使用谷歌浏览器录制脚本
  18. 研发管理进阶:边怼人边改进
  19. 设计模式-合成复用原则-》面向对象设计原则
  20. 信源编码技术作业1:使用Audacity绘制并分析清音、浊音、爆破音的频谱图

热门文章

  1. grafana+prometheus快速搭建MySql监控系统实践
  2. react-router browserHistory刷新页面404问题解决
  3. 【转】matlab函数_连通区域
  4. 怎么修改nginx的access.log的时间格式
  5. 字符串工具类、数组工具类、集合工具类、转型操作工具类、编码与解码操作工具类...
  6. php-nginx超时时间过短导致的post失败
  7. 极索(Gsuo)推出新版地图采用Gmap设计思路
  8. Echart图表X轴为时间轴的解释
  9. 深入实践Spring Boot1.3.2 一个简单的实例
  10. jQuery可悬停控制图片轮播