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

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

WBOY
WBOYasal
2016-08-04 09:21:011263semak imbas

转换入参字符串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('字符串');

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn