Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试将HashPassword c#(Microsoft示例)转换为javascript_Javascript_Parsing_Byte - Fatal编程技术网

尝试将HashPassword c#(Microsoft示例)转换为javascript

尝试将HashPassword c#(Microsoft示例)转换为javascript,javascript,parsing,byte,Javascript,Parsing,Byte,我想将c#中的byte.Parse转换为javascript。。但我不知道怎么做 byte[] binarySaltValue = new byte[SaltValueSize]; binarySaltValue[0] = byte.Parse(saltValue.Substring(0, 2), System.Globalization.NumberStyles.HexNumber, CultureInfo.InvariantCulture.NumberFormat); 我需要得到子字符串

我想将c#中的byte.Parse转换为javascript。。但我不知道怎么做

byte[] binarySaltValue = new byte[SaltValueSize];

binarySaltValue[0] = byte.Parse(saltValue.Substring(0, 2), System.Globalization.NumberStyles.HexNumber, CultureInfo.InvariantCulture.NumberFormat);
我需要得到子字符串(0,2)的ascII码。。。我说得对吗

编辑问题

我真正想做的是将Microsoft的HashPassword方法转换成Javascript

private static string HashPassword(string clearData, string saltValue, HashAlgorithm hash)
        {
            UnicodeEncoding encoding = new UnicodeEncoding();

            if (clearData != null && hash != null && encoding != null)
            {
                // If the salt string is null or the length is invalid then
                // create a new valid salt value.



                // Convert the salt string and the password string to a single
                // array of bytes. Note that the password string is Unicode and
                // therefore may or may not have a zero in every other byte.

                byte[] binarySaltValue = new byte[SaltValueSize];

                binarySaltValue[0] = byte.Parse(saltValue.Substring(0, 2), System.Globalization.NumberStyles.HexNumber, CultureInfo.InvariantCulture.NumberFormat);
                binarySaltValue[1] = byte.Parse(saltValue.Substring(2, 2), System.Globalization.NumberStyles.HexNumber, CultureInfo.InvariantCulture.NumberFormat);
                binarySaltValue[2] = byte.Parse(saltValue.Substring(4, 2), System.Globalization.NumberStyles.HexNumber, CultureInfo.InvariantCulture.NumberFormat);
                binarySaltValue[3] = byte.Parse(saltValue.Substring(6, 2), System.Globalization.NumberStyles.HexNumber, CultureInfo.InvariantCulture.NumberFormat);

                byte[] valueToHash = new byte[SaltValueSize + encoding.GetByteCount(clearData)];
                byte[] binaryPassword = encoding.GetBytes(clearData);

                // Copy the salt value and the password to the hash buffer.

                binarySaltValue.CopyTo(valueToHash, 0);
                binaryPassword.CopyTo(valueToHash, SaltValueSize);

                byte[] hashValue = hash.ComputeHash(valueToHash);

                // The hashed password is the salt plus the hash value (as a string).

                string hashedPassword = saltValue;

                foreach (byte hexdigit in hashValue)
                {
                    hashedPassword += hexdigit.ToString("X2", CultureInfo.InvariantCulture.NumberFormat);
                }

                // Return the hashed password as a string.

                return hashedPassword;
            }

            return null;
        }

好的,这就是我的解决方案,也许它没有优化,但运行良好

 function Salt(plainText, salt) {


        if (plainText != undefined && plainText != "" && salt != null) {
            // If the salt string is null or the length is invalid then
            // create a new valid salt value.

            // Convert the salt string and the password string to a single
            // array of bytes. Note that the password string is Unicode and
            // therefore may or may not have a zero in every other byte.

            var binarySaltValue = new Array();
            binarySaltValue[0] = parseInt(salt.substring(0, 2), 16);
            binarySaltValue[1] = parseInt(salt.substring(2, 4), 16);
            binarySaltValue[2] = parseInt(salt.substring(4, 6), 16);
            binarySaltValue[3] = parseInt(salt.substring(6, 8), 16);
            var binaryPassword = cryptoHelper.stringToBytes(plainText);
            var valueToHash = new Array();
            // Copy the salt value and the password to the hash buffer.
            // binarySaltValue.concat(valueToHash);
            // binarySaltValue.CopyTo(valueToHash, 0);
            // binaryPassword.CopyTo(valueToHash, SaltValueSize);
            valueToHash = valueToHash.concat(binarySaltValue);
            // Détermine la longeur utilisé par le array - 2048
            var newLengthArray = 2048 - valueToHash.length;
            var tampon = new Array(newLengthArray);
            for (var i = 0; i < tampon.length; i++) {
                tampon[i] = 0;
            }
            valueToHash = valueToHash.concat(tampon);
            valueToHash = valueToHash.concat(binaryPassword);
            var hashValue = CryptoJS.MD5(CryptoJS.lib.Base.ByteArray(valueToHash));
            var arr = wordArrayToByteArray(hashValue);
            var hashedPassword = salt;
            for (var i = 0; i < arr.length; i++) {
                hexdigit = arr[i];
                var hexValue = hexdigit.toString(16);
                if (hexValue.length < 2) hexValue = "0" + hexValue;
                hashedPassword += hexValue;
            }
            return hashedPassword;
        }
        return null;
    }
函数Salt(纯文本,Salt){
if(纯文本!=未定义和纯文本!=“”和盐!=null){
//如果salt字符串为null或长度无效,则
//创建新的有效salt值。
//将salt字符串和密码字符串转换为单个
//字节数组。请注意,密码字符串是Unicode和
//因此,每隔一个字节中可能有零,也可能没有零。
var binarySaltValue=新数组();
二进制saltvalue[0]=parseInt(salt.substring(0,2),16);
binarySaltValue[1]=parseInt(salt.substring(2,4),16);
binarySaltValue[2]=parseInt(salt.substring(4,6),16);
binarySaltValue[3]=parseInt(salt.substring(6,8,16));
var binaryPassword=cryptoHelper.stringToBytes(纯文本);
var valueToHash=新数组();
//将salt值和密码复制到哈希缓冲区。
//concat(valueToHash);
//CopyTo(valueToHash,0);
//CopyTo(valueToHash,SaltValueSize);
valueToHash=valueToHash.concat(二进制saltvalue);
//De eTytMeLa LeuneU.ULILIEPALE LE阵列- 2048
var newLengthArray=2048-valueToHash.length;
var tampon=新阵列(新长度阵列);
对于(变量i=0;i
好的,这就是我的解决方案,也许它没有优化,但运行良好

 function Salt(plainText, salt) {


        if (plainText != undefined && plainText != "" && salt != null) {
            // If the salt string is null or the length is invalid then
            // create a new valid salt value.

            // Convert the salt string and the password string to a single
            // array of bytes. Note that the password string is Unicode and
            // therefore may or may not have a zero in every other byte.

            var binarySaltValue = new Array();
            binarySaltValue[0] = parseInt(salt.substring(0, 2), 16);
            binarySaltValue[1] = parseInt(salt.substring(2, 4), 16);
            binarySaltValue[2] = parseInt(salt.substring(4, 6), 16);
            binarySaltValue[3] = parseInt(salt.substring(6, 8), 16);
            var binaryPassword = cryptoHelper.stringToBytes(plainText);
            var valueToHash = new Array();
            // Copy the salt value and the password to the hash buffer.
            // binarySaltValue.concat(valueToHash);
            // binarySaltValue.CopyTo(valueToHash, 0);
            // binaryPassword.CopyTo(valueToHash, SaltValueSize);
            valueToHash = valueToHash.concat(binarySaltValue);
            // Détermine la longeur utilisé par le array - 2048
            var newLengthArray = 2048 - valueToHash.length;
            var tampon = new Array(newLengthArray);
            for (var i = 0; i < tampon.length; i++) {
                tampon[i] = 0;
            }
            valueToHash = valueToHash.concat(tampon);
            valueToHash = valueToHash.concat(binaryPassword);
            var hashValue = CryptoJS.MD5(CryptoJS.lib.Base.ByteArray(valueToHash));
            var arr = wordArrayToByteArray(hashValue);
            var hashedPassword = salt;
            for (var i = 0; i < arr.length; i++) {
                hexdigit = arr[i];
                var hexValue = hexdigit.toString(16);
                if (hexValue.length < 2) hexValue = "0" + hexValue;
                hashedPassword += hexValue;
            }
            return hashedPassword;
        }
        return null;
    }
函数Salt(纯文本,Salt){
if(纯文本!=未定义和纯文本!=“”和盐!=null){
//如果salt字符串为null或长度无效,则
//创建新的有效salt值。
//将salt字符串和密码字符串转换为单个
//字节数组。请注意,密码字符串是Unicode和
//因此,每隔一个字节中可能有零,也可能没有零。
var binarySaltValue=新数组();
二进制saltvalue[0]=parseInt(salt.substring(0,2),16);
binarySaltValue[1]=parseInt(salt.substring(2,4),16);
binarySaltValue[2]=parseInt(salt.substring(4,6),16);
binarySaltValue[3]=parseInt(salt.substring(6,8,16));
var binaryPassword=cryptoHelper.stringToBytes(纯文本);
var valueToHash=新数组();
//将salt值和密码复制到哈希缓冲区。
//concat(valueToHash);
//CopyTo(valueToHash,0);
//CopyTo(valueToHash,SaltValueSize);
valueToHash=valueToHash.concat(二进制saltvalue);
//De eTytMeLa LeuneU.ULILIEPALE LE阵列- 2048
var newLengthArray=2048-valueToHash.length;
var tampon=新阵列(新长度阵列);
对于(变量i=0;i
您正在寻找
parseInt
?它需要一个基数,所以
parseInt('f0',16)==240
。也许你可以把你的问题添加几个示例输入值和相应的期望结果?@Ryan,正是这样。谢谢,你必须转换成ASCII码。尝试Encoding.ASCII.GetBytes(字符串)您正在查找
parseInt
?它需要一个基数,所以
parseInt('f0',16)==240
。也许你可以把你的问题添加几个示例输入值和相应的期望结果?@Ryan,正是这样。谢谢,你必须转换成ASCII码。尝试编码.ASCII.GetBytes(字符串)