Gaurav_Chaudhary Ответов: 2

Каков эквивалент этого кода в языке Си#


I dont know PHP and I am stucking at one Position can anybody help me.

I have a code in PHP.


function signUrl($url, $key, $secret, $timestamp) {
    $request_type = 'GET';
    $content_type = '';
    $content_body = '';
    $content_digest = base64_encode(pack('H*', md5($content_body)));

    $request_array = array($request_type, $content_type, $content_digest, $url, $timestamp);
    $request_string = implode(',', $request_array);

    $signature = hash_hmac('sha256', $request_string, $secret, false);

    $signed_url = "{$url}&signature={$signature}";
    return $signed_url;
}


Что я уже пробовал:

Any help would be appreciated

2 Ответов

Рейтинг:
5

Gaurav_Chaudhary

private string CreateToken(string message, string secret)
       {
           ASCIIEncoding encoding = new ASCIIEncoding();
           byte[] keyBytes = encoding.GetBytes(secret);
           byte[] messageBytes = encoding.GetBytes(message);
           System.Security.Cryptography.HMACSHA256 cryptographer = new System.Security.Cryptography.HMACSHA256(keyBytes);

           byte[] bytes = cryptographer.ComputeHash(messageBytes);

           return BitConverter.ToString(bytes).Replace("-", "").ToLower();

       }


       public static string CreateMD5(string input)
       {
           using (MD5 md5 = MD5.Create())
           {
               byte[] bPayload = Encoding.UTF8.GetBytes(input);
               byte[] bPayloadHash = md5.ComputeHash(bPayload);

               return Convert.ToBase64String(bPayloadHash);
           }
       }


Рейтинг:
12

Jochen Arndt

Посмотрите, что делают функции PHP, и найдите соответствующие методы C# :

PHP: md5 - руководство пользователя[^]: Вычислите хэш md5 строки: используйте System.Security.Cryptography.MD5 класс

РНР: упаковка - инструкция[^]: С "H*" это похоже на Text.Encoding.ASCII.GetBytes() метод

PHP: base64_encode - руководство пользователя[^]: Кодирует данные с помощью MIME base64: используйте Convert.ToBase64String() метод

PHP: array - Manual[^]: Создание массива

PHP: implode - Manual[^]: Соединение элементов массива со строкой: String.Join()

РНР: hash_hmac - руководство пользователя[^]: Сгенерировать хэш-значение, используя метод HMAC: с помощью System.Security.Cryptography.HMACSHA256 класс

Последняя строка форматирует возвращаемую строку: String.Format()


[no name]

Спасибо

private string CreateToken(строковое сообщение, строковый секрет)
{
ASCIIEncoding encoding = новое ASCIIEncoding();
byte[] keyBytes = кодировка.GetBytes(секретно);
byte[] messageBytes = кодировка.GetBytes(сообщение);
Система.Безопасность.Криптография.Криптограф HMACSHA256 = новая система.Безопасность.Криптография.HMACSHA256(keyBytes);

byte[] bytes = криптограф.Метода computehash(messageBytes);

верните BitConverter.ToString(байты).Заменять("-", "").Нижестоящим();

}


public static string CreateMD5(строковый ввод)
{
используя алгоритм MD5 (алгоритм MD5 = MD5 хэш.Создать())
{
byte[] bPayload = Encoding.UTF8.Метод getbytes(вход);
byte[] bPayloadHash = md5.ComputeHash(bPayload);

вернуть обменять.ToBase64String(bPayloadHash);
}
}