Расшифровка AES на SQL Server

Я создал на своем 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. Как мне это сделать?

Почему inputString является байтовым массивом, а не строкой, как следует из названия? Это массив байтов, представляющий строку base64, или это просто необработанные незакодированные данные?

Llama 25.06.2018 15:06

Да, это строка base64. Данные в базе уже зашифрованы

Odie 25.06.2018 15:24

Возможный дубликат C# Преобразование Base64 -> byte []

Llama 25.06.2018 15:30

Ответ Яхьи на дубликате должен решить вашу проблему. Как бы то ни было, вы не должны кодировать base64 массив byte[], а затем сохранять что как двоичные данные в своей базе данных. Вы должны сохранить исходный массив byte[]перед, он был закодирован как двоичный в вашей базе данных. В противном случае, какой смысл кодировать его в base64 - вы ничего не получите от этого, кроме того, что ваши данные будут занимать больше места на диске. Вся причина использования base64 заключается в кодировании любых двоичных данных в простом буквенно-цифровом (и +, /, =) формате, чтобы их можно было передавать в виде строки.

Llama 25.06.2018 15:32
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
1 224
0

Другие вопросы по теме