mysql 密码hash算法_如何用hash创建一个mySQL用户(‘sha256’,$salt.$password)?

我肯定错过了什么.

我想为select-only事务设置数据库用户帐户,但mysql不允许我在创建用户帐户时选择密码的哈希方法.

这失败了:

GRANT SELECT ON myDB.* TO 'selectuser'@'localhost'

IDENTIFIED BY hash('sha256', 'salted-myfakelongrandompasswordstring');

错误1064(42000):您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行的’hash(‘sha256′,’salted-myfakelongrandompasswordstring’)附近使用正确的语法

这传递:

GRANT SELECT ON myDB.* TO 'selectuser'@'localhost'

IDENTIFIED BY 'salted-myfakelongrandompasswordstring';

我检查了phpinfo页面,并且已经启用了sha256哈希引擎.

有没有办法更改mysql的默认哈希算法,或者我的SQL语法是否正确?

解决方法:

不,您不应该使用自己的密码哈希进行MySQL身份验证.

MySQL使用自己的密码散列函数(PASSWORD()),它产生一个41字节的十六进制字符串(基于将SHA1应用于输入两次).不幸的是,没有使用盐.

如果您能够以问题中显示的方式使用GRANT,那么MySQL会将其PASSWORD()函数应用于hash()函数的字符串输出.随后,当您要登录时,您必须输入密码的256位哈希值,以便与MySQL身份验证数据库中的内容进行匹配.

此外,MySQL支持MySQL 6.0.5中的SHA2()系列哈希函数.

hash()函数是你可能从PHP中记住的东西.它不是MySQL的一部分.

更新:本周我参加了MySQL大会,发现他们正在完全改变未来产品版本号的路线图. SHA2()函数目前是MySQL源代码的一部分,但它未确定对应的产品版本.此外,您需要使用OpenSSL / YaSSL支持构建的MySQL,以便SHA2()能够正常工作.

重新评论:通常,MySQL身份验证与给定Web应用程序中的用户帐户身份验证完全分开(出于多种原因,这是最佳做法).

是的,您需要为您的Web应用程序硬编码MySQL身份验证的用户名/密码.可能在,但更好的是配置文件.当然,把这些放在web根目录之外.

当用户需要登录时,计算其输入密码的hash(),并结合其帐户记录的salt值.然后将其与存储在该用户的数据库中的哈希进行比较.在伪代码中:

$salt = $db->query("SELECT salt FROM Accounts WHERE account_name = ?",

$input_account_name);

$password_hash = hash('sha256', $salt + $input_password)

$is_password_correct = $db->query("SELECT password_hash = ?

FROM Accounts WHERE account_name = ?",

$password_hash, $input_account_name);

标签:mysql,passwords,hash,salt

来源: https://codeday.me/bug/20190622/1260567.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/329154.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么微软逐步转变为开源公司

微软目前拥有自己的 BSD Unix 操作系统,支持 Ubuntu 作为 Windows 10 的一个子系统,最近又将 Xamarin 软件开发工具包开源,所有这些意味着微软已不再是比尔盖茨和史蒂夫鲍尔默的微软了。 我知道这很难令人相信,但微软确实正大步走…

Jdk1.8 JUC源码增量解析(1)-atomic-Striped64

转载自 Jdk1.8 JUC源码增量解析(1)-atomic-Striped64功能简介:Striped64是jdk1.8提供的用于支持如Long累加器,Double累加器这样机制的基础类。Striped64的设计核心思路就是通过内部的分散计算来避免竞争(比如多线程CAS操作时的竞争)。Striped64内部包含…

java内部类选择题_java内部类详解(附相关面试题)

说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉。原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法。今天我们就来一探究竟。一.内部类基础在Java中&am…

开源,新的平台之战

近日,OpenDaylight项目的执行总监Neela Jacques在文章《开源的转变:一种新的平台战争》 中提到:开源已经成为软件公司业务战略的关键,是一种新的平台之战。 多年来,开源软件似乎处于技术产业的边缘。而如今&#xff0c…

java下载图片到手机相册_Unity保存图片到Android手机且更新相册

Android 保存图片到设备前言:在许多的应用或游戏中,大多都有保存图片或者截图等等的功能,这篇文档我们的目的是通过 Unity 保存图片,并且调用 Andorid 中的更新相册的原生方法.流程步骤:编写更新相册的 Android 原生接口 -> Unity 编写保存图片逻辑以及调用更新相册 Android…

如何在 Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例

转载自 如何在 Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例 wait, notify 和 notifyAll,这些在多线程中被经常用到的保留关键字,在实际开发的时候很多时候却并没有被大家重视。本文对这些关键字的使用进行了描述。 在 Java 中…

.NET Core 使用Dapper 操作MySQL

.NET Core 使用Dapper 操作MySQL 数据库, .NET Core 使用Dapper。 目前官方没有出.NET Core MySQL 驱动,但是已经有第三方进行改动封装出.NET Core MySQL Connector 预览版。 Dapper 也已经出了 .NET Core 预览版。 Dapper dot net 是一个轻量型的ORM&a…

Angular 2与TypeScript概览

迄今为止,在创建Web应用方面,AngularJS是当前最为流行的JavaScript框架。如今,Angular 2和TypeScript通过一种非常类似于Java 8的语法,使真正面向对象的Web开发成为了主流。 据Google的工程主管Brad Green介绍,有130万…

正确使用 Volatile 变量

转载自 Java 理论与实践 - 正确使用 Volatile 变量 - volatile 变量使用指南Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少&#xf…

java龟兔赛跑设计思路_JAVA程序设计(09)-----面对对象设计初级应用 龟兔赛跑

1.乌龟和兔子共有属性和方法 做成父类 避免重复代码package com.lovo;/*** 类: 动物* author Abe* 属性: 名字 步距 总距离 睡觉的日子*/public class Animal {protected String name;protected int step;protected int distance;protected int sleepDay…

16年国庆假期期间兼职所悟

2016年9月25日,学校放假了!!! 学校放假11天,10月7号才开学,除了晚上上个夜班之外别的时间都在闲着,这么大的自己感觉闲着真不是滋味,于是开始疯狂的在58上找工作,心里想…

python flask项目过程_Python 开发过程遇到的问题

另一方面,也是因为时间原因,没有事先系统了解 python 的具体内容,所以开发过程中基本都是拿 java 的东西往 python 里面套。比如:某个功能用 java 的 ArrayList 可以解决,那 python 中有没有类似的东西呢?j…

Java 中的双重检查(Double-Check)

转载自 Java 中的双重检查(Double-Check) 在 Effecitve Java 一书的第 48 条中提到了双重检查模式,并指出这种模式在 Java 中通常并不适用。该模式的结构如下所示: public Resource getResource() { if (resource null) { …

使用 Autofac 进行依赖注入

先说下为什么翻译这篇文章,既定的方向是架构,然后为了学习架构就去学习一些架构模式、设计思想。 突然有一天发现依赖注入这种技能。为了使得架构可测试、易维护、可扩展,需要架构设计为松耦合类型,简单的说也就是解耦。为了解耦前…

组合的示例代码 java_java实现Composite组合模式的实例代码

//20210121写在前面:刚期末考试完,考了面向对象,里边儿有23个设计模式,我寻思着考完挨个儿实现一下,本文实现组合模式组合模式核心思想类似文件夹的概念,构件树形结构,树形有叶子结点和文件夹结…

Java中的ThreadPoolExecutor类

转载自 Java中的ThreadPoolExecutor类在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了&…

webpack 前端构建

一、建立简单的项目目录 1、创建 manager 根目录(作为项目根目录)2、执行 npm init,在根目录manager下自动生成 package.json文件3、npm install webpack --save-dev,在项目中安装 webpack npm包4、在根目录下 创建 webpack.config.js,所有的…

简析 .NET Core 构成体系

简析 .NET Core 构成体系Roslyn 编译器RyuJIT 编译器CoreCLR & CoreRTCoreFX(.NET Core Libraries).NET Core 代码开发、部署、运行过程总结 前文介绍了.NET Core 在整个.NET 平台所处的地位,以及与.NET Framework的关系(原文链接),本文将详细介绍.N…

判断一个男人穷还是富,只看这几点!

转载至: 来源:甜蜜爸妈手记(wxtm01) 作者:甜甜妈 创业君 导读 千主意万主意,如果不行动,永远就只是个想法而已。好想法要配得上行动才行。 看看他的爱好一个有事业心男人,绝对不…

php制作留言板的题_PHP实现留言板功能实例代码

本文实例为大家分享了php留言板的实现思路,供大家参考,具体内容如下:1.创建一个存放留言信息的文件名2.获取表单中的数据给一个变量3.判断文件的时候存在4.对文件执行写的操作,在这之前,注意打开文件的时候&#xff0c…