Datagridview, Показать редактируемую расшифрованную строку. - PullRequest
0 голосов
/ 15 декабря 2011

Я могу показать зашифрованное значение, расшифрованное в сетке данных, используя событие CellFormatting для дешифрования.Но как сделать это редактируемым, чтобы при вводе новой строки оно шифровалось в привязанное свойство и при этом отображалось как записанное (расшифрованное) ..?Как только я заканчиваю редактировать ячейку и ухожу, она дает исключение в методе Decrypt.

FormatException: недопустимая длина для массива символов Base-64.

    public static string DecryptData(string stringToDecrypt)
    {
        byte[] decryptedData = ProtectedData.Unprotect(Convert.FromBase64String(stringToDecrypt), Encoding.Unicode.GetBytes(EntropyValue), DataProtectionScope.LocalMachine);
        return Encoding.Unicode.GetString(decryptedData);
    }

Ответы [ 2 ]

0 голосов
/ 15 декабря 2011

Если вы всегда расшифровываете поле при загрузке сетки, то вам просто нужно зашифровать его, чтобы сохранить изменения в базе данных?

Подключитесь к cellValidating или подобному событию, чтобы увидеть, было ли изменение и есть ли шифрование -> сохранить в базе данных -> затем обновить / перезагрузить сетку из базы данных.

При перезагрузке вы переносите новую версию поля в кодировке base64, которая затем будет красиво расшифрована, избегая этой ошибки

0 голосов
/ 15 декабря 2011

Исключение, которое вы получаете, скорее всего, исходит от части:

Convert.FromBase64String(stringToDecrypt) 

stringToDecrypt должен иметь длину, кратную 4. Убедитесь, что это так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...