Heim  >  Artikel  >  Backend-Entwicklung  >  java - php如何字符串转二进制数组后对二进制数组进行md5摘要,对摘要后的二进制数组转化为十六进制字符串输出?

java - php如何字符串转二进制数组后对二进制数组进行md5摘要,对摘要后的二进制数组转化为十六进制字符串输出?

WBOY
WBOYOriginal
2016-08-04 09:21:011213Durchsuche

转换入参字符串waitForSignString 为二进制数组,编码采用UTF-8(Java代码如:waitForSignString.getByte("utf-8")),得到签名入参的二进制格式数据(waitForSignBytes)。

使用MD5,Sha1或Sha256算法对waitForSignBytes进行摘要签名。得到签名在结果二进制数组数据(signatureBytes)

对签名输出的结果二进制数组(signatureBytes)进行16进制的字符串编码,得到最后的签名字符串(signature)

算法表达式:

String signature = Hex(digest (stringToSign+secretKey)) 其中digest算法可以为:MD5, Sha256Hex

请问这段签名算法用php应该怎么实现? php的md5似乎没有办法操作数组。。。。

回复内容:

转换入参字符串waitForSignString 为二进制数组,编码采用UTF-8(Java代码如:waitForSignString.getByte("utf-8")),得到签名入参的二进制格式数据(waitForSignBytes)。

使用MD5,Sha1或Sha256算法对waitForSignBytes进行摘要签名。得到签名在结果二进制数组数据(signatureBytes)

对签名输出的结果二进制数组(signatureBytes)进行16进制的字符串编码,得到最后的签名字符串(signature)

算法表达式:

String signature = Hex(digest (stringToSign+secretKey)) 其中digest算法可以为:MD5, Sha256Hex

请问这段签名算法用php应该怎么实现? php的md5似乎没有办法操作数组。。。。

  1. 在PHP中,字符串是兼容二进制的,并且默认就带有编码形式,如果你的字符串本身是UTF-8编码的,那它就已经是UTF-8的二进制数组了。

  2. PHP中的md5函数可以直接计算字符串(也就是二进制数组)的MD5值,并且默认输出的就是已经转换成16进制的结果。

所以,在Java中捺莫多操作所所要实现的……
在PHP中就是 $md5 = md5('字符串');

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn