使用crypt配置Basic Auth登录认证 (2)

标准DES(Standard DES)
在没有匹配到其他算法的情况下,则使用标准DES算法,此时取前两个字符为盐值(不足两个字符则返回*0)。盐值的字符必须是./0-9A-Za-z里的字符。

php > echo crypt("123", "t123"); t1ZzgDe4z3qWE php > echo crypt("123", "123"); 12IbR.gJ8wcpc php > echo crypt("123", "t"); *0

扩展DES(Extended DES)
以下划线_开头,后面紧接着4字节的迭代次数和4字节的盐值。也就是取前9位,后面是什么值无所谓。

php > echo crypt("123", "_12345678"); _12345678VaI36zUn7Jk php > echo crypt("123", "_12345678t"); _12345678VaI36zUn7Jk php > echo crypt("123", "_testtest"); _testtest4v7fH1Er0Ng php > echo crypt("123", "_testtest1"); _testtest4v7fH1Er0Ng

MD5
以$1$开头,然后是12个字符以内的盐值。只要前12位相同,生成的hash相同。

php > echo crypt("123", '$1$'); $1$$GmbL3iXOMZR57QuGDLv.L1 php > echo crypt("123", '$1$2'); $1$2$WOzAAwhejT62wplMg6rEE1 php > echo crypt("123", '$1$23'); $1$23$0ZjnChzzaj90xZQJQKHFS1 php > echo crypt("123", '$1$123456789'); $1$12345678$tRy4cXc3kmcfRZVj4iFXr/ php > echo crypt("123", '$1$1234567890'); $1$12345678$tRy4cXc3kmcfRZVj4iFXr/

注意:PHP里双引号里面的字符串如果包含$会被认为是变量。

lowfish
以$2a$、$2x$或者$2y$开头,然后是用于cost参数的两位数字,紧接着一个$字符,最后是22位./0-9A-Za-z范围里的字符。

php > echo crypt("123", '$2a$07$usesomesillystringforsalt$'); $2a$07$usesomesillystringforeN7/2NBfGxbAuv02IPrTFBImFJd5PJ1m php > echo crypt("123", '$2a$07$usesomesillystringforsalt$1'); $2a$07$usesomesillystringforeN7/2NBfGxbAuv02IPrTFBImFJd5PJ1m

使用这个算法的时候,$str最长支持72个字符,超过会被截掉。

SHA256
以$5$开头,然后是16个字符的盐值,盐值之前还可以使用rounds=$的格式表明哈希的循环次数(N)。

php > echo crypt("123", '$5$rounds=5000$usesomesillystringforsalt$'); $5$rounds=5000$usesomesillystri$BYJncGl82VuZ6T61c4wSpXT.xoDSuz9aF4JyE9F08U4

rounds的默认值为5000,范围是1000到999,999,999,如果N不在这个范围里,会被截取到最接近的范围里。

SHA512
以$6$开头,然后是16个字符的盐值,盐值之前还可以使用rounds=$的格式表明哈希的循环次数(N)。

php > echo crypt("123", '$6$rounds=5000$usesomesillystringforsalt$'); $6$rounds=5000$usesomesillystri$YPNvueKNHmPrzbloaqIomo1gPrVo8aLnqwrKlhlfThu2wzo73efrh/FCR4CAUf/GFe7gF6vuLWTMyFNb7jfnT1

rounds的默认值为5000,范围是1000到999,999,999,如果N不在这个范围里,会被截取到最接近的范围里。

PHP里我们使用crypt函数,salt直接传第一个参数的base64_encode即可:

$hashed_password = crypt ( 'mypassword', base64_encode('mypassword') ); 参考

1、Nginx配置Basic Auth登录认证 - 简书
https://www.jianshu.com/p/b4a78af4e266
2、PHP笔记 —— crypt方法 - 个人文章 - SegmentFault 思否
https://segmentfault.com/a/1190000009219416
3、PHP: crypt - Manual

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyjsdz.html