Подпишите файл с помощью закрытого ключа в.NET

, когда я пытаюсь использовать x3 вместо [newIgrac1], он не даст мне

Исправить

Изменить listaIG: [IIgrac] на listaIG: IIgrac[] [ 1111]

Почему

[IIgrac] - это кортеж одного элемента. IIgrac[] представляет собой массив .

6
задан Riri 6 April 2009 в 09:37
поделиться

3 ответа

Если Вы хотите подписать блок, jaloplo дал решение.

Если Вы хотите подписать некоторые файлы, созданные Вашей программой, взглянуть на класс DSACryptoServiceProvider в Системе. Безопасность. Пространство имен криптографии.

3
ответ дан 17 December 2019 в 00:14
поделиться

Попробуйте это:

class Program
{
    static byte[] Sign(string message, RSAParameters key)
    {
        RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
        rsa.ImportParameters(key);

        byte[] toSign = Encoding.Unicode.GetBytes(message);
        return rsa.SignData(toSign, "SHA1");
    }

    static bool Verify(string message, byte[] signature, RSAParameters key)
    {
        RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
        rsa.ImportParameters(key);

        byte[] toVerify = Encoding.Unicode.GetBytes(message);
        return rsa.VerifyData(toVerify, "SHA1", signature);
    }

    static void Main(string[] args)
    {
        string message = "Let's sign this message.";

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

        byte[] signature = Sign(message, privatekey);

        if (Verify(message, signature, publickey))
        {
            Console.WriteLine("It worked!");
        }
    }
}

Важно отметить, что новая общедоступная/частная пара ключей сгенерирована каждый раз, Вы запускаете эту программу. Чтобы сделать то, что Вы хотите, Вы захотите сохранить общедоступную/частную пару ключей перед использованием его в обоих концах. Ваш открытый ключ является единственной вещью, которую необходимо проверить, таким образом, закрытый ключ не будет опубликован клиенту.

Вы могли бы хотеть смотреть на ExportParameters или ExportCspBlob для выполнения сохранения/загрузки общедоступной/частной пары ключей.

6
ответ дан 17 December 2019 в 00:14
поделиться

У Вас есть две возможности:

  • Однажды находится на свойствах проекта на опции Sign.
  • Второе, изменяют AssemblyInfo.cs файл и добавляет команды для использования сгенерированного sn: [assembly: AssemblyKeyFile("..\\..\\SN_Generated.snk")]
-2
ответ дан 17 December 2019 в 00:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: