我遇到转换字符串的问题,让我们说:“TestPassword”到SHA1和base64。
一般根据该网站: http://www.online-convert.com/result/1f76972748a7d186198171e9a11e9493
我将获得以下密码的结果:
hex: 6250625b226df62870ae23af8d3fac0760d71588
HEX: 6250625B226DF62870AE23AF8D3FAC0760D71588
h:e:x: 62:50:62:5b:22:6d:f6:28:70:ae:23:af:8d:3f:ac:07:60:d7:15:88
base64: YlBiWyJt9ihwriOvjT+sB2DXFYg= <-- That is what I would like to achieve ...
将字符串转换为SHA1没有问题,但我不知道如何将它再次转换为base64,因为需要将每两个字符视为十六进制字节,然后将其传递给base64函数。
有人可以点亮它或粘贴代码片段怎么做?
谢谢!
答案 0 :(得分:13)
Base64编码应该在SHA1摘要的原始二进制版本上执行,而不是它的十六进制编码。
您可以通过true
传递$raw_output
函数的sha1()
参数来获取该原始版本:
$base64 = base64_encode(sha1("TestPassword", true));
答案 1 :(得分:1)
我认为这是一个迟到的回应,但我通过使用原始md5然后将其转换为base64达到了确切的价值:
$base64 = base64_encode(hash("md5", "myPassword", true));