Я создал следующее шифрование в MSSMS 12:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Password123';
CREATE CERTIFICATE Certificate1
WITH SUBJECT = 'Protect Data';
CREATE SYMMETRIC KEY SymmetricKey1
WITH ALGORITHM = AES_128
ENCRYPTION BY CERTIFICATE Certificate1;
UPDATE Customer_data
SET Credit_card_number_encrypt = EncryptByKey (Key_GUID('SymmetricKey1'),Credit_card_number)
Как мне расшифровать значение, поступающее из моей базы данных, которое является public byte[] Credit_card_number_encrypt
в строку?
Вотмоя попытка кода:
private string DecryptString(byte[] inputString)
{
MemoryStream memStream = null;
try
{
byte[] key = { };
byte[] IV = { 12, 21, 43, 17, 57, 35, 67, 27 };
string encryptKey = "Password123"; // MUST be 8 characters
key = Encoding.UTF8.GetBytes(encryptKey);
byte[] byteInput = new byte[inputString.Length];
byteInput = Convert.FromBase64String(inputString);
DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
memStream = new MemoryStream();
ICryptoTransform transform = provider.CreateDecryptor(key, IV);
CryptoStream cryptoStream = new CryptoStream(memStream, transform, CryptoStreamMode.Write);
cryptoStream.Write(byteInput, 0, byteInput.Length);
cryptoStream.FlushFinalBlock();
Encoding encoding1 = Encoding.UTF8;
return encoding1.GetString(memStream.ToArray());
}
catch (Exception ex)
{
Console.Write(ex.Message);
return "";
}
}
Проблема в том, что Convert.FromBase64String(inputString)
не может преобразовать тип данных byte[]
в string
.Как мне это сделать?