Я работаю над проектом (на основе PHP), в котором мне нужно вычислить SHA1, я использую эту строку кода для генерации SHA1 в PHP.
$da = file_get_contents("payload.txt");
echo sha1($da);
и это код для .Net
private static string GetSHA1(string text)
{
UnicodeEncoding UE = new UnicodeEncoding();
byte[] hashValue;
byte[] message = UE.GetBytes(text);
SHA1Managed hashString = new SHA1Managed();
string hex = "";
hashValue = hashString.ComputeHash(message);
foreach (byte x in hashValue)
{
hex += String.Format("{0:x2}", x);
}
return hex;
}
Но я запутался, потому что оба языка дают разные результаты, я не даю соли в обоих из них (так как я не знаю, что использовать в соли, потому что API не определил это)
После этого мне также нужно работать на RSA (у меня есть ключ для шифрования)
Также может кто-нибудь сказать, эти алгоритмы отличаются из-за языков или чего-то, что мне не хватает ???
Нужны мнения экспертов по этому вопросу
это весь алгоритм генерации шифрования SHA1 и RSA
<?php
class MyEncryption
{
public $pubkey = '...public key here...';
public $privkey = '...private key here...';
public function encrypt($data)
{
if (openssl_private_encrypt($data, $encrypted, $this->pubkey))
$data = base64_encode($encrypted);
else
throw new Exception('Unable to encrypt data. Perhaps it is bigger than the key size?');
return $data;
}
public function decrypt($data)
{
if (openssl_private_decrypt(base64_decode($data), $decrypted, $this->privkey))
$data = $decrypted;
else
$data = '';
return $data;
}
}
$enc = new MyEncryption();
$enc->pubkey = file_get_contents("server.key");
$payload = file_get_contents("payload1.txt");//payload1.txt contain xml data
$hashRes = sha1($payload,true);
echo $enc->encrypt($hashRes);
?>
Большое спасибо