Maison >développement back-end >tutoriel php >java - 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似乎没有办法操作数组。。。。
转换入参字符串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似乎没有办法操作数组。。。。
在PHP中,字符串是兼容二进制的,并且默认就带有编码形式,如果你的字符串本身是UTF-8编码的,那它就已经是UTF-8的二进制数组了。
PHP中的md5函数可以直接计算字符串(也就是二进制数组)的MD5值,并且默认输出的就是已经转换成16进制的结果。
所以,在Java中捺莫多操作所所要实现的……
在PHP中就是 $md5 = md5('字符串');