首页 > 解决方案 > 如何将此代码在javascript中转换为java

问题描述

我在 javascript 中有这段代码,我需要将其转换为 java,但我不是 javascript 专家。

这里的代码:

function keyGen(mat)
{
        var hash = base64_encode(pack("H*", sha1($mat)));
        var l = obj.hash.length - 4;
        var p1 = Math.floor(Math.random() * (l+1)) ;
        var p2 = Math.floor(Math.random() * (l+1)) ;
        var p3 = Math.floor(Math.random() * (l+1)) ;
        var motif1 = obj.hash.substr(p1, 4) ;
        var motif2 = obj.hash.substr(p2, 4) ;
        var motif3 = obj.hash.substr(p3, 4) ;
        var cle = motif1+motif2+motif3 ;
    return cle ;
}

对于哈希,我使用该函数,但我无法修改它:

public static String get_SHA_512_SecurePassword(String passwordToHash, String   salt){
        String generatedPassword = null;
            try {
                 MessageDigest md = MessageDigest.getInstance("SHA-512");
                 md.update(salt.getBytes(StandardCharsets.UTF_8));
                 byte[] bytes = md.digest(passwordToHash.getBytes(StandardCharsets.UTF_8));
                 StringBuilder sb = new StringBuilder();
                 for(int i=0; i< bytes.length ;i++){
                    sb.append(Integer.toString((bytes[i] & 0xff) + 0x100, 16).substring(1));
                 }
                 generatedPassword = sb.toString();
                } 
               catch (NoSuchAlgorithmException e){
                e.printStackTrace();
               }
            return generatedPassword;
        }

标签: javascriptjavahashsha512

解决方案


function keyGen(mat) {
    // seems to get the sha1 of $mat (whatever that is), 
    // converts this sha1 into HEX string
    // encode the hex string into into base64
    // the above is a GUESS, as I don't know what library you are using for these functions
    var hash = base64_encode(pack("H*", sha1($mat)));

    // length of `obj.hash` - whatever that is
    var l = obj.hash.length - 4;

    // random number between 0 and l + 1
    var p1 = Math.floor(Math.random() * (l+1)) ;
    // random number between 0 and l + 1
    var p2 = Math.floor(Math.random() * (l+1)) ;
    // random number between 0 and l + 1
    var p3 = Math.floor(Math.random() * (l+1)) ;

    // a substring of whatever obj.hash is, from position p1 length 4
    var motif1 = obj.hash.substr(p1, 4) ;
    // a substring of whatever obj.hash is, from position p2 length 4
    var motif2 = obj.hash.substr(p2, 4) ;
    // a substring of whatever obj.hash is, from position p3 length 4
    var motif3 = obj.hash.substr(p3, 4) ;

    // the string concatenation of the above three strings
    var cle = motif1+motif2+motif3 ;
    // returns this 12 character string
    return cle ;
}

现在,你需要弄清楚的是

  • 什么是base64_encode
  • 什么是pack
  • 什么是sha1
  • 什么是$mat
  • obj你用obj.hash的是什么
  • 为什么你要创造hash却从不使用它
  • 为什么你从不使用mat论点

推荐阅读