Alex2 101 Ответов: 1

Почему значение подписи изменяется каждый раз при применении подписи с использованием алгоритма RSA 256?


Значение подписи, генерируемое для файла, изменяется каждый раз при применении подписи с использованием алгоритма RSA 256.

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

RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); // Creates a new RANDOM key.
     RSAParameters privatekey = rsa.ExportParameters(true);
     RSAParameters publickey = rsa.ExportParameters(false);







     string sign = SignData1(content, privatekey);


public static string SignData1(string message, RSAParameters privateKey)
    {
        //// The array to store the signed message in bytes
        byte[] signedBytes;
        using (var rsa = new RSACryptoServiceProvider())
        {
            //// Write the message to a byte array using UTF8 as the encoding.
            var encoder = new UTF8Encoding();
            byte[] originalData = encoder.GetBytes(message);

            try
            {
                //// Import the private key used for signing the message
                rsa.ImportParameters(privateKey);

                //// Sign the data, using SHA512 as the hashing algorithm 
                signedBytes = rsa.SignData(originalData, CryptoConfig.MapNameToOID("SHA256"));
            }
            catch (CryptographicException e)
            {
                Console.WriteLine(e.Message);
                return null;
            }
            finally
            {
                //// Set the keycontainer to be cleared when rsa is garbage collected.
                rsa.PersistKeyInCsp = false;
            }
        }
        //// Convert the a base64 string before returning
       // return signedBytes;
        return Convert.ToBase64String(signedBytes);
    }

Richard MacCutchan

Я бы предположил, что это как-то связано со случайным ключом.

Dave Kreskowiak

Какая часть "// Создает новый случайный ключ.- неужели ты не понимаешь?

1 Ответов

Рейтинг:
2

David A. Gray

Если бы он не менялся каждый раз, когда вы его создавали, сломать его было бы намного проще. Хорошие криптографические шифры, независимо от того, используются ли они для подписей или для шифрования целых документов, начинаются со значения "соль", которое, как ожидается, будет меняться каждый раз, когда шифр используется, даже с одним и тем же ключом. Степень, в которой соль действительно случайна, называется энтропией, и многие исследования были сосредоточены на том, как получить больше энтропии (случайности) в этот процесс.

Например, хороший генератор соли может найти способ объединить несколько независимых источников энтропии таким образом, чтобы целое было по крайней мере равно сумме его частей.

Например, в начале алгоритма AES (Rijndael) осуществление опубликовала доктор Брайан Глэдман используются значения от тактовой частоты процессора в качестве источника энтропии.