Попытка прочитать зашифрованное значение DES3 из функции шифрования Oracle - PullRequest
2 голосов
/ 23 декабря 2010

Я работаю с устаревшей системой, в которой уже есть функция oracle для шифрования и дешифрования, и я использую ODP.net в C # для связи с БД Oracle.

Мне необходимо зашифровать значение с помощью функции oracle encrypt, котораяиспользуя алгоритм шифрования DES3 в Oracle и использую это зашифрованное значение для чтения данных из базы данных Oracle.
Я могу вызвать функцию Oracle, и она зашифровывает, но возвращает зашифрованный текст с кучей прямоугольников, которые символы не могут скрыть, поэтому, когда я использую этозашифрованное значение для чтения данных из базы данных Oracle, его неработающее значение не возвращает ничего.

Мой вопрос: как правильно прочитать зашифрованный текст из функции шифрования Oracle в основном, как я могу использовать этот возвращенный зашифрованный текст длячитать данные из базы данных оракула?Эта функция шифрования оракула принимает один входной параметр для шифрования и выдает зашифрованное значение.Любые идеи были бы полезны на любом языке, C # было бы здорово.

Заранее большое спасибо.Будьте здоровы!R

Ответы [ 2 ]

1 голос
/ 24 декабря 2010

Мне не совсем понятно.

Я предполагаю, что у вас есть данные в Oracle, которые зашифрованы.Вы хотите извлечь эти данные из таблицы, а затем использовать функцию Oracle для их расшифровки.

Когда вы шифруете данные, которые обычно хотите сохранить, это RAW или BLOB, потому что они больше не являются строкой, и вы нене требуется, чтобы на нем происходила какая-либо строка, например преобразование набора символов (например, удаление акцентов из символов).Альтернативой хранилищу RAW / BLOB является преобразование байтов в шестнадцатеричное представление, но это тратит много памяти, поэтому я бы не рекомендовал это делать.

Итак, первый шаг - определить, хранятся ли данные Oracle.как RAW / BLOB, HEX или использовали ли они VARCHAR2 и использовали ли они одинаковый набор символов, чтобы избежать проблем с конвертацией.Если последнее, определите набор символов базы данных (администратор БД должен быть в состоянии получить это из v $ nls_parameters, если он не знает его из рук вон).

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

SELECT расшифровать (encrypted_column,: key_variable) FROM table WHERE id = ....;

0 голосов
/ 23 декабря 2010

Использует ли функция Oracle строковые типы данных? Если это так, вам нужно использовать ту же кодировку в приложении C # (хотя я не знаю, как) и преобразовать строку в байты.

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