private readonly byte[] _key;
private readonly byte[] _iv;
public PermitController()
{
var rng = new RNGCryptoServiceProvider();
_key = new byte[32];
rng.GetBytes(_key);
_iv = new byte[16];
rng.GetBytes(_iv);
}
public async Task Encryptori()
{
ViewBag.Display = "";
ViewBag.Key = Convert.ToBase64String(_key);
ViewBag.IV = Convert.ToBase64String(_iv);
ApplicationUser user = await _userManager.GetUserAsync(User);
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task Encryptori(IFormCollection collection)
{
string TheKey = collection["Key"];
string TheIv = collection["IV"];
var keyBytes = Convert.FromBase64String(TheKey);
var ivBytes = Convert.FromBase64String(TheIv);
string encryptedName = collection["Name"];
string encryptedAddress = collection["Address"];
var decryptedName = Decrypt(encryptedName, TheKey, TheIv);
var decryptedAddress = Decrypt(encryptedAddress, TheKey, TheIv);
// Store the decrypted data in the ViewBag
ViewBag.Display = encryptedName + " and " + encryptedAddress;
ApplicationUser user = await _userManager.GetUserAsync(User);
return View();
}
private string Decrypt(string encryptedText, string key, string iv)
{
try
{
var keyBytes = Convert.FromBase64String(key);
var ivBytes = Convert.FromBase64String(iv);
using (var aes = Aes.Create())
{
aes.Key = keyBytes;
aes.IV = ivBytes;
aes.Padding = PaddingMode.PKCS7;
aes.Mode = CipherMode.ECB;
var decryptor = aes.CreateDecryptor(aes.Key, aes.IV);
using (var ms = new MemoryStream())
{
using (var cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Write))
{
var encryptedBytes = Convert.FromBase64String(encryptedText);
cs.Write(encryptedBytes, 0, encryptedBytes.Length);
}
ms.Position = 0;
var decryptedBytes = new byte[ms.Length];
ms.Read(decryptedBytes, 0, decryptedBytes.Length);
return Encoding.UTF8.GetString(decryptedBytes);
}
}
}
catch (CryptographicException ex)
{
Console.WriteLine("Decryption failed: " + ex.Message);
return null;
}
}
Я пробовал менять разные режимы заполнения, но все равно. По-прежнему возникает исключение System.Security.Cryptography.CryptographicException: «Заполнение недопустимо и не может быть удалено. Как вы можете видеть, оба заполнения режима «pkcs7» «ECB» идентичны в Js и контроллере.
Это мнение. При отправке данные шифруются. Нет проблем.: [code]
Name:
Address:
Encrypt and Submit
@ViewBag.Display
[/code]
Это сценарий в представлении: [code]
function encryptAndSubmit() { var name = document.getElementById("Name").value; var address = document.getElementById("Address").value; var key = "@ViewBag.Key"; var iv = "@ViewBag.IV";
var encryptedName = encrypt(name, key, iv); var encryptedAddress = encrypt(address, key, iv);
var decryptor = aes.CreateDecryptor(aes.Key, aes.IV); using (var ms = new MemoryStream()) { using (var cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Write)) { var encryptedBytes = Convert.FromBase64String(encryptedText); cs.Write(encryptedBytes, 0, encryptedBytes.Length); } ms.Position = 0; var decryptedBytes = new byte[ms.Length]; ms.Read(decryptedBytes, 0, decryptedBytes.Length); return Encoding.UTF8.GetString(decryptedBytes); } } } catch (CryptographicException ex) { Console.WriteLine("Decryption failed: " + ex.Message); return null; } } [/code] Я пробовал менять разные режимы заполнения, но все равно. По-прежнему возникает исключение System.Security.Cryptography.CryptographicException: «Заполнение недопустимо и не может быть удалено. Как вы можете видеть, оба заполнения режима «pkcs7» «ECB» идентичны в Js и контроллере.
Я попытался реализовать функцию шифрования RSA на C# с использованием .NET v8. Тест шифрования прошел гладко, но во время теста дешифрования произошло непредвиденное исключение.
ДЕТАЛЬ ОШИБКИ:
System.Security.Cryptography.CryptographicException...
Я использую .NET Framework 4.8 и получаю исключение, когда хочу расшифровать свой ключ.
Мой ключ: GRa22IQfZEhyQspHlYbH298LL9ByAy/cqkncc563ErI=
Мой пароль: JXg++525m7zDlr2HUrqkmwY29tOF8gK7hIUwT6mYzTk=
Я получаю исключение Get...
Я использую .NET Framework 4.8 и получаю исключение при расшифровке своего ключа.
Мой ключ: GRa22IQfZEhyQspHlYbH298LL9ByAy/cqkncc563ErI=
Мой пароль это: JXg++525m7zDlr2HUrqkmwY29tOF8gK7hIUwT6mYzTk=
Я получаю исключение Get...
Я использую .NET Framework 4.8 и получаю исключение при расшифровке своего ключа.
Мой ключ: GRa22IQfZEhyQspHlYbH298LL9ByAy/cqkncc563ErI=
Мой пароль это: JXg++525m7zDlr2HUrqkmwY29tOF8gK7hIUwT6mYzTk=
Ключ, который я сгенерировал на этом сайте, имеет...