метод из Python конвертировать в C # - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть метод, который мне нужно переделать в C # на основе этого кода Python.

def _generateHash(self, password, time_stamp, nonce):
    import hashlib
    shaPw = hashlib.sha1()
    shaPw.update( password )
    m = hashlib.sha1()
    m.update(str(time_stamp))
    m.update(nonce)
    m.update(shaPw.hexdigest())
    m.update(self.api_key_secret)
    return m.hexdigest()

хеширование в C # отличается по сравнению с Python.также мой опыт хеширования не так уж велик.Есть ли кто-нибудь, кто может мне помочь?

это ват у меня сейчас.

    private string GenerateHash(string password, double timeStamp, string nonce)
    {
        using (SHA1Managed sha1 = new SHA1Managed())
        {
            var pwHash = sha1.ComputeHash(Encoding.UTF8.GetBytes(password));
            using (SHA1Managed sha1total = new SHA1Managed())
            {
                sha1total.ComputeHash(Encoding.UTF8.GetBytes(timeStamp.ToString()));
                sha1total.ComputeHash(Encoding.UTF8.GetBytes(nonce));

                string hexaHashPW = "";
                foreach (byte b in pwHash)
                {
                    hexaHashPW += String.Format("{0:x2}", b);
                }

                sha1total.ComputeHash(Encoding.UTF8.GetBytes(hexaHashPW));
                sha1total.ComputeHash(Encoding.UTF8.GetBytes(_SecretApiKey));

                var hmac = new HMACSHA1();

                //string hexaHashTotal = "";
                //foreach (byte b in sha1total.Hash)
                //{
                //    hexaHashTotal += String.Format("{0:x2}", b);
                //}
                hmac.ComputeHash(sha1total.Hash);
                var hexaHashTotal = hmac.Hash;
                var endhash = BitConverter.ToString(hexaHashTotal).Replace("-", "");
                return endhash;

            }
        }


    }

1 Ответ

0 голосов
/ 18 февраля 2019

после еще большего количества исследований, ошибок и следов я нашел способ создать тот же хэш, что и код Python.

- это ответ для других, у которых проблемы с этим.

    private string GenerateHash(string password, double timeStamp, string nonce)
    {
        using (SHA1Managed sha1 = new SHA1Managed())
        {
            var pwHash = sha1.ComputeHash(Encoding.UTF8.GetBytes(password));
            using (SHA1Managed sha1total = new SHA1Managed())
            {
                string hexaHashPW = "";
                foreach (byte b in pwHash)
                {
                    hexaHashPW += String.Format("{0:x2}", b);
                }

                var hmacPW = new HMACSHA1();
                hmacPW.ComputeHash(pwHash);

                sha1total.ComputeHash(Encoding.UTF8.GetBytes(timeStamp.ToString() + nonce + hexaHashPW + _SecretApiKey));
                var hmac = new HMACSHA1();

                string hexaHashTotal = "";
                foreach (byte b in sha1total.Hash)
                {
                    hexaHashTotal += String.Format("{0:x2}", b);
                }
                hmac.ComputeHash(sha1total.Hash);
                return hexaHashTotal.ToLower();

            }
        }


    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...