我的服务器主机有php版本5.2.17。我正在使用随机令牌并在我的函数中使用openssl_random_pseudo_bytes。
for i, g in DF.groupby(['Label','Date2']):
print (g)
print ('diff2: ')
print (g[['Date', 'Date2']].diff())
print ('------------')
Label Date Date2
0 A 1981-03-06 1981-03-06
diff2:
Date Date2
0 NaT NaT
------------
Label Date Date2
3 A 1983-11-08 1982-06-11
diff2:
Date Date2
3 NaT NaT
------------
Label Date Date2
2 A 1983-11-08 1983-11-08
diff2:
Date Date2
2 NaT NaT
------------
Label Date Date2
1 A 1981-03-06 1986-05-01
diff2:
Date Date2
1 NaT NaT
------------
Label Date Date2
4 B 1977-02-26 1977-02-26
diff2:
Date Date2
4 NaT NaT
------------
Label Date Date2
5 B 1991-09-04 1991-09-04
diff2:
Date Date2
5 NaT NaT
------------
尝试从Scott's answer运行此代码。
它在我的本地主机上运行良好,具有更高的PHP版本。
除了升级我的服务器php版本。 openssl_random_pseudo_bytes( $length);
的替代功能是什么?
更新:使用openssl_random_pseudo_bytes
,如何生成安全的唯一令牌?
截至目前,我正在使用这行代码:
mt_rand, rand or uniqid
$token = md5(uniqid(rand(), true));
感谢您的帮助!
答案 0 :(得分:2)
我正在使用5.6,但也一直在寻找创建安全和唯一令牌的方法,因为我无法使openssl_random_pseudo_bytes函数起作用。我在github上运行了paragonie的random_compat,这应该允许你使用random_bytes()和random_int()(两者都只适用于PHP7)。他们确实说它应该能够在理论上与旧的5.x版本的PHP一起使用,尽管它们确实建议更新到当前稳定版本的php。 https://github.com/paragonie/random_compat
这是另一个堆栈溢出答案的链接,建议使用random_bytes()作为$ token = bin2hex(random_bytes($ length));
best practice to generate random token for forgot password
此外我发现的链接暗示了paragonie的random_compat https://akrabat.com/random_bytes-in-php-5-6-and-5-5/ https://paragonie.com/blog/2015/07/how-safely-generate-random-strings-and-integers-in-php
答案 1 :(得分:0)
openssl_random_pseudo_bytes(10)
的替代方式类似于PHP 5.X
decbin(rand(0,1024))