热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在MySQl数据库中使用哪种方法加密密码?

如何解决《在MySQl数据库中使用哪种方法加密密码?》经验,为你挑选了1个好方法。

我一直在研究将我的密码加密到mySQL数据库的最佳方法,但我无法确定密码的最佳加密方式.

md5(据说由于各种安全原因我不知道有缺陷,但是以某种方式被WordPress使用.为什么这个功能如此受到批评?

sha1()只是受到md计算复杂性更强的系列启发的另一个功能.

password() 似乎建议使用.

PASSWORD()MySQl

然后,hash()在PHP 5.1.2中使用的新功能.和更新的版本

MySQl PASSWORD()与上面提到的其他php函数有什么不同?



1> Binarus..:

首先,请注意,大多数人不加密(如你写的)密码到他们的数据库.加密,无论是对称的还是非对称的,意味着可以再次解码数据.加密密码将是一个非常糟糕的概念(至少如果所有这些密钥都存在公共密钥),因为解密密钥必须存储在某个地方,如果攻击者得到它们,他可以立即解密所有密码.

你想做什么叫做散列.密码的哈希值是通过对密码应用散列函数从密码派生的.这里的关键点是这个过程无法恢复,即没有数学方法可以从哈希中获取密码.

说完这个:

MySQL SET PASSWORDPASSWORD()被弃用了.它们将在MySQL的未来版本中删除.如果您希望应用程序与未来版本的MySQL一起运行,请不要使用SET PASSWORDPASSWORD().

绝对不是MD5和SHA1; 他们被认为是破碎的.

SHA-2系列(例如SHA256,SHA512)在数学意义上被认为是安全的.然而,它具有低计算成本/高速度,而今天的消费者GPU可以每秒计算数十亿的SHA-2哈希值.因此,对于散列的口令,其他散列函数喜欢bcrypt,pbkdf2scrypt(这是我目前最喜欢的)是合适的; 它们设计得很慢(调整速度有多慢,这是未来的一大优势)和(在scrypt的情况下)消耗大量内存,这使得基于硬件(ASIC,FPGA)的攻击更加困难.

我不懂PHP,但大多数语言都有一个名为crypt()encrypt()类似的crypt()函数,它使用底层操作系统的API(在Linux:glibc中),所以你可以用它作为起点,但前提是它已经提供了一种慢速哈希算法(大多数情况并非如此).

MySQL有一个函数ENCRYPT(),它也使用操作系统crypt(),但它也被弃用了.MySQL也有一个SHA2()功能,但如上所述,这可能还不够.不幸的是,MySQL的(据我所知)没有提供BCRYPT(),PBKDF2(),SCRYPT()或任何其他知名缓慢的哈希函数.

由于您应该使用慢速哈希算法之一,并且由于操作系统crypt()(在大多数情况下)和MySQL都没有提供任何一种,因此您应该在后端应用程序中进行哈希处理.如上所述,我不知道PHP,但我很确定至少有一个众所周知的慢哈希算法(它不依赖于底层操作系统的/ libc crypt())的实现.

顺便说一下,散列算法的各种实现之间的结果没有差异.例如,如果使用您喜欢的编程语言将SHA512应用于字符串,则结果将与使用MySQL将SHA512应用于同一字符串相同.其他散列算法也是如此,包括慢速算法.但是,可能存在性能差异.

这基本上意味着,如果您现在在应用程序后端进行散列,只要MySQL提供您正在使用的慢速散列算法,就可以在MySQL中稍后执行此操作.您可以在应用程序后端中的散列和数据库中的散列之间切换,而无需重新计算所有存储的散列并且不会丢失数据.

其他经验法则:

完全理解我给出的所有参考文献之前,甚至不要考虑实施自己的登录/密码系统.

如果由于某种原因被迫使用任何其他散列算法而不是慢速算法,请始终使用salting,当然每个密码使用不同的盐.虽然有些人宣称这没用,但我不这么认为.它仍然会使攻击更加困难(与没有盐的哈希相比).但是对于快速哈希算法的攻击,例如来自SHA-2系列的算法,无论是否使用盐,与针对其中一种慢速哈希算法的攻击相比,仍然非常容易和有效.

最后,这是一篇博客文章,可以帮助您入门.这将让你对重要的事情有所了解,但你必须做进一步的研究(现在是四年之后......).


推荐阅读
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 如何搭建服务器环境php(2023年最新解答)
    导读:本篇文章编程笔记来给大家介绍有关如何搭建服务器环境php的相关内容,希望对大家有所帮助,一起来看看吧。本文目录一览:1、怎么搭建p ... [详细]
  • destoon会员注册提示“数据校验失败(2)”解决方法【PHP】
    后端开发|php教程destoon,会员注册,数据校验失败,后端开发-php教程很多人在使用destoon建立一个B2B系统的时候,会在企业站注册企业用户的时候出现:“数据校验失败 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • Yii framwork 应用小窍门
    Yiiframework应用小窍门1.YiiFramework]如何获取当前controller的名称?下面语句就可以获取当前控制器的名称了!Php代码 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 2021最新总结网易/腾讯/CVTE/字节面经分享(附答案解析)
    本文分享作者在2021年面试网易、腾讯、CVTE和字节等大型互联网企业的经历和问题,包括稳定性设计、数据库优化、分布式锁的设计等内容。同时提供了大厂最新面试真题笔记,并附带答案解析。 ... [详细]
  • 本文分享了一位Android开发者多年来对于Android开发所需掌握的技能的笔记,包括架构师基础、高级UI开源框架、Android Framework开发、性能优化、音视频精编源码解析、Flutter学习进阶、微信小程序开发以及百大框架源码解读等方面的知识。文章强调了技术栈和布局的重要性,鼓励开发者做好学习规划和技术布局,以提升自己的竞争力和市场价值。 ... [详细]
author-avatar
hi347
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有