C# System.Security.Cryptography.CryptographicException: «Неизвестная ошибка (0xc100000d)»C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 C# System.Security.Cryptography.CryptographicException: «Неизвестная ошибка (0xc100000d)»

Сообщение Anonymous »

Я попытался реализовать функцию шифрования RSA на C# с использованием .NET v8. Тест шифрования прошел гладко, но во время теста дешифрования произошло непредвиденное исключение.
ДЕТАЛЬ ОШИБКИ:

Код: Выделить всё

System.Security.Cryptography.CryptographicException
HResult=0xC100000D
Message=Unknown error (0xc100000d)
Source=System.Security.Cryptography
StackTrace:
at Interop.BCrypt.BCryptEncryptRsa(SafeBCryptKeyHandle key, ReadOnlySpan`1 source, Span`1 destination, Void* pPaddingInfo, BCryptEncryptFlags dwFlags)
at System.Security.Cryptography.RSABCrypt.TryEncrypt(ReadOnlySpan`1 data, Span`1 destination, RSAEncryptionPadding padding, Int32& bytesWritten)
at System.Security.Cryptography.RSA.Encrypt(ReadOnlySpan`1 data, Span`1 destination, RSAEncryptionPadding padding)
at System.Security.Cryptography.RSABCrypt.Encrypt(Byte[] data, RSAEncryptionPadding padding)
at FileCryptography.FileEncryptionUtility.Encrypt(Byte[] data, String pemKey) in Class1.cs:line 51
at FileCryptography.FileEncryptionUtility.EncryptFile(String filePath, String pemKey) in Class1.cs:line 25
at FileCryptography.FileEncryptionUtility.File_encryption(Boolean Is_encrypt, String File_path, String PEMkey) in Class1.cs:line 14
at Cry.Form.File_crypt(Boolean Is_encrypt, String File_path) in Form1.cs:line 114
at Cry.Form.Form_Load(Object sender, EventArgs e) in Form1.cs:line 203
at System.Windows.Forms.Form.OnLoad(EventArgs e)
at System.Windows.Forms.Control.CreateControl(Boolean ignoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(HWND hWnd, MessageId msg, WPARAM wparam, LPARAM lparam)

Вот мой код:

Код: Выделить всё

Class1.cs

Код: Выделить всё

using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;

namespace FileCryptography
{
public class FileEncryptionUtility
{
public static void File_encryption(bool Is_encrypt, string File_path, string PEMkey)
{
if (Is_encrypt)
{
EncryptFile(File_path, PEMkey);
}
else
{
DecryptFile(File_path, PEMkey);
}
}

private static void EncryptFile(string filePath, string pemKey)
{
byte[] data = File.ReadAllBytes(filePath);
byte[] encryptedData = Encrypt(data, pemKey);
File.Delete(filePath);
string p1 = Path.GetDirectoryName(filePath);
string p2 = Path.GetFileNameWithoutExtension(filePath);
string p3 = Path.GetExtension(filePath);
string p4 = ".rwnenc";
string p = $"{p1}{p2}{p3}{p4}";
File.WriteAllBytes(p, encryptedData);
File.Delete(filePath);
}
private static void DecryptFile(string filePath, string pemKey)
{
byte[] encryptedData = File.ReadAllBytes(filePath);
byte[] decryptedData = Decrypt(encryptedData, pemKey);
string directory = Path.GetDirectoryName(filePath);
string filenameWithoutExtension = Path.GetFileNameWithoutExtension(filePath);
filenameWithoutExtension = filenameWithoutExtension.Replace(".rwnenc", "");
string newFilePath = Path.Combine(directory, filenameWithoutExtension);
File.WriteAllBytes(newFilePath, decryptedData);
}

private static byte[] Encrypt(byte[] data, string pemKey)
{
using (RSA rsa = RSA.Create())
{
rsa.ImportFromPem(pemKey.ToCharArray());
return rsa.Encrypt(data, RSAEncryptionPadding.OaepSHA512);
}
}

private static byte[] Decrypt(byte[] data, string pemKey)
{
using (RSA rsa = RSA.Create())
{
rsa.ImportFromPem(pemKey.ToCharArray());
return rsa.Decrypt(data, RSAEncryptionPadding.OaepSHA512);
}
}
}
}

Я ожидаю, что программа будет работать без сбоев и не возникнет ошибка 0xC100000D, указывающая на неизвестную ошибку
Мне нужен срочный ответ.

Подробнее здесь: https://stackoverflow.com/questions/790 ... -error-0xc
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»