PHP中的Java哈希

PHP中的Java哈希,java,php,hash,md5,sha512,Java,Php,Hash,Md5,Sha512,我有一个Java方法,它用盐散列字符串 我想转换成PHP,但我不知道Java的API是如何做到这一点的。这个函数在PHP中是什么样子的 MD5: 公共字符串doHash(字符串s、字符串salt){ 试一试{ final MessageDigest md5=MessageDigest.getInstance(“md5”); md5.reset(); if(salt!=null&&!salt.isEmpty()){ md5.update(salt.getBytes()); } 字节[]数组=md5

我有一个Java方法,它用盐散列字符串

我想转换成PHP,但我不知道Java的API是如何做到这一点的。这个函数在PHP中是什么样子的

MD5:

公共字符串doHash(字符串s、字符串salt){
试一试{
final MessageDigest md5=MessageDigest.getInstance(“md5”);
md5.reset();
if(salt!=null&&!salt.isEmpty()){
md5.update(salt.getBytes());
}
字节[]数组=md5.digest(s.getBytes());
StringBuilder hexData=新的StringBuilder();
对于(int i=0;i
SHA512:

public String doHash(String s, String salt) {
    try {
        final MessageDigest sha512 = MessageDigest.getInstance("SHA-512");
        sha512.reset();
        if (salt != null && !salt.isEmpty()) {
            sha512.update(salt.getBytes());
        }
        byte[] data = sha512.digest(s.getBytes());
        StringBuilder hexData = new StringBuilder();
        for (int byteIndex = 0; byteIndex < data.length; byteIndex++) {
            hexData.append(Integer.toString((data[byteIndex] & 0xff) + 0x100, 16).substring(1));
        }
        return hexData.toString();
    } catch (NoSuchAlgorithmException e) {
        throw new RuntimeException(e);
    }
}
公共字符串doHash(字符串s、字符串salt){
试一试{
final MessageDigest sha512=MessageDigest.getInstance(“SHA-512”);
sha512.reset();
if(salt!=null&&!salt.isEmpty()){
更新(salt.getBytes());
}
byte[]data=sha512.digest(s.getBytes());
StringBuilder hexData=新的StringBuilder();
对于(int-byteIndex=0;byteIndex
那么,您希望我们为您编写PHP等价物吗?我想了解它是如何完成的,这样我就可以自己编写了。但是,如果有人能够编写PHP等价物并加以解释,我也会很高兴。那么,您希望我们为您编写PHP等价物吗?我想了解它是如何完成的,这样我就可以自己编写了。但是,如果有人能够编写PHP等价物并加以解释,我也会很高兴。
public String doHash(String s, String salt) {
    try {
        final MessageDigest sha512 = MessageDigest.getInstance("SHA-512");
        sha512.reset();
        if (salt != null && !salt.isEmpty()) {
            sha512.update(salt.getBytes());
        }
        byte[] data = sha512.digest(s.getBytes());
        StringBuilder hexData = new StringBuilder();
        for (int byteIndex = 0; byteIndex < data.length; byteIndex++) {
            hexData.append(Integer.toString((data[byteIndex] & 0xff) + 0x100, 16).substring(1));
        }
        return hexData.toString();
    } catch (NoSuchAlgorithmException e) {
        throw new RuntimeException(e);
    }
}