2015-01-08 203 views
3

我有转换字符串的问题,让我们说:“TestPassword”到SHA1和base64。将字符串转换为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

不是很清楚你在问什么。究竟是什么问题? – marekful

+0

我不知道如何将SHA1转换为base64以获得上述结果 – John

+0

请记住,SHA1不再推荐用于密码散列。如果可以,请使用'password_hash'。 – halfer

回答

10

Base64编码应该在SHA1摘要的原始二进制版本上执行,而不是它的十六进制编码。

你可以通过truesha1()功能的$raw_output参数得到这个原始版本:

$base64 = base64_encode(sha1("TestPassword", true)); 
1

我认为这是一个迟到的反应,但我通过使用原始MD5,然后将其转换实现了精确值以base64:

$base64 = base64_encode(hash("md5", "myPassword", true)); 
相关问题