Closed vladikKBR85 closed 1 year ago
Здравствуйте!
У экземпляра симметричного ключа есть методы экспорта/импорта. Им можно воспользоваться для передачи ключа по сети или чтобы сохранить в файл/хранилище.
Возможно, я неправильно понял вопрос. :)
Да, разобрался, спасибо! Скажите, пожалуйста, а поддержка Astra Linux не планируется?
Видимо, не до конца разобрался..
var test = new Gost_28147_89_SymmetricAlgorithm();
var key = test.EncodePrivateKey(test, GostKeyExchangeExportMethod.CryptoProKeyExport);
File.WriteAllBytes("winkey.txt", key);
key = File.ReadAllBytes("winkey.txt");
var test2 = new Gost_28147_89_SymmetricAlgorithm();
var keyV = test2.DecodePrivateKey(key, GostKeyExchangeExportMethod.CryptoProKeyExport);
Выдает нативное исключение.. Подскажите, как правильно выполнять импорт?
Возможно, не совсем удачные комментарии к методу EncodePrivateKey. Первым параметром он принимает общий секретный ключ, на основе которого шифруется текущий (экземпляр класса, у которого вызывается метод EncodePrivateKey).
Таким образом, у вас будет два экземпляра Gost_28147_89_SymmetricAlgorithm. Первый - общий секретный ключ, его знают обе стороны взаимодействия. Его можно создать, например, на основе секретной фразы, сохранённой в конфигурации приложения. Второй - тот ключ, который вы хотите закодировать в массив байт для передачи.
Вызов выглядит примерно так:
var keyBytes = key.EncodePrivateKey(sharedKey, ...);
Обратный процесс:
var key = sharedKey.DecodePrivateKey(keyBytes, ....);
P.s. Это если мне не изменяет память, сейчас не могу проверить. :)
Относительно Astra Linux и о крипто провайдерах. Затруднительно собрать стенд для разработки, к сожалению, обещать ничего не могу.
Огромное спасибо, все получилось!
Добрый день.
Пробую реализовать обмен пакетами содержащими имитовставки. Подскажите, пожалуйста, как можно расшарить симметричный ключ между двумя сервисами для тестов? Аналогично вот этому коду?
К сожалению- не имею совершенно не имею опыта в криптографии.