Я создаю сертификат и шифрую этот сертификат в виде файла bin на локальный диск. Я делаю это, используя следующий код powershell:
$bytes = $CertificateResponse.ToCharArray() | % {[byte] $_}
[Byte[]]$entropy = 4,17,9,88,236,1688,1486,41,182,16,72,93,2,188,2,23
# Encrypt the byte array.
$encryptedBytes = [System.Security.Cryptography.ProtectedData]::Protect(
$bytes,
$entropy,
[System.Security.Cryptography.DataProtectionScope]::LocalMachine)
$encryptedBytes | Set-Content C:\certificate\xxx.bin -Encoding Byte
Позже этот же двоичный файл хранится на другом компьютере, и я пытаюсь прочитать и расшифровать файл следующим образом (используя c#):
try
{
this.EntropyKey = new byte[] { 4,17,9,88,236,1688,1486,41,182,16,72,93,2,188,2,23};
var data = File.ReadAllBytes(Path.Combine(localPath, "xxx.bin"));
var decryptedData = ProtectedData.Unprotect(data, this.EntropyKey, DataProtectionScope.LocalMachine);
this.Certificate = new X509Certificate(decryptedData);
return Task.CompletedTask;
}
catch (Exception ex)
{
throw new NotImplementedException();
}
Когда я запускаю код, я получаю Исключение как «Ключ недопустим для использования в указанном состоянии» в строке, где я пытаюсь расшифровать. Это работает нормально, если я пытаюсь расшифровать с помощью команды powershell. Любая помощь приветствуется. Примечание. Я дал разрешение на чтение файла.