| Начало » Использование СУБД » Oracle » Столбец зашифрован в Oracle, нужно расшифровать в SQL Server (Oracle Encryption) Переход к форуму:
	| 
		
			| Столбец зашифрован в Oracle, нужно расшифровать в SQL Server [сообщение #5835] | Wed, 18 December 2024 21:42  |  
			| 
				
				
					|  Vovaa83 Сообщений: 3
 Зарегистрирован: December 2024
 | Junior Member |  |  |  
	| Здравствуйте. У нас такая ситуация. Загружаем в наш SQL Server табличку из Oracle. В одном столбце таблицы Oracle хранятся конфиденциальные данные и им безопасники запрещают по сети передавать этот столбец поэтому они его шифруют на своей стороне и к нам этот столбец приходит в уже зашифрованном виде типа binary (16). Вопрос такой - можно ли уже получив эти данные и сохранив их в нашу таблицу на SQL server , расшифровать этот столбец уже на нашей стороне? Я с шифрованием столкнулся первый раз и пока очень поверхностно понимаю как оно устроено. Может можно как-то воссоздать ключи на нашей стороне которые использовались в Oracle , естественно по договорённости с ними,  и  у нас это сработает? Или тут может даже пытаться не стоит и надо искать другие решения? 
 Может есть у кого-нибудь ссылка на описание подобных кейсов? Я пока так ничего и не нашел. ORACLE прислали нам скрипт который они используют при шифровании и дешифровке на их стороне :
 
 declare
 l_input    number := 123456;
 l_output   number;
 
 l_encrypted_raw raw(2000);
 l_decrypted_raw raw(2000);
 
 l_num_key_bytes number := 256 / 8;  -- key length 256 bits (32 bytes)
 l_key           raw(32);            -- stores 256-bit encryption key
 
 l_encryption_type pls_integer := dbms_crypto.encrypt_aes256 + dbms_crypto.chain_ecb + dbms_crypto.pad_zero;
 begin
 dbms_output.put_line('Original string: ' || l_input);
 
 --    l_key := dbms_crypto.randombytes(l_num_key_bytes);
 l_key :=     '1E1760676B29588E7AA6D7F674E989732E7C46604663D7E024E94FB5BA8 41AA3';
 dbms_output.put_line('Key: ' || l_key);
 
 l_encrypted_raw := dbms_crypto.encrypt(
 src => utl_i18n.string_to_raw(l_input, 'AL32UTF8'),
 typ => l_encryption_type,
 key => l_key
 );
 
 dbms_output.put_line('Encrypted number: ' || l_encrypted_raw);
 
 l_decrypted_raw := dbms_crypto.decrypt(
 src => l_encrypted_raw,
 typ => l_encryption_type,
 key => l_key
 );
 
 l_output := utl_i18n.raw_to_char(l_decrypted_raw, 'AL32UTF8');
 
 dbms_output.put_line('Decrypted number: ' || l_output);
 end;
 /
 --      ------------------------------------------------------------ --------------------------------------------------------
 Original string: 123456
 Key:     1E1760676B29588E7AA6D7F674E989732E7C46604663D7E024E94FB5BA84 1AA3
 Encrypted number: 01E008A0ECC9218079118F12751AAFBB
 Decrypted number: 123456
 
 Но как я уже говорил я с таким сталкиваюсь впервые и не совсем понимаю что делать. Вроде какой-то ключ они указывают и я даже пытался сделать на основе Key:     1E1760676B29588E7AA6D7F674E989732E7C46604663D7E024E94FB5BA84 1AA3 ключ в SQL Server но это не сработало.
 
 Плюс еще они пишут что у них зашифрованное значение прдеставляется вот в таком виде 01E008A0ECC9218079118F12749AAFBB а если делать шифровку в SQL Server то шивфрованные значения выглядят как абра-кадбра -  ёXaя$J¤Ъ‚ ck=t
 [Обновления: Wed, 18 December 2024 21:43] Известить модератора |  
	|  |  |  
	| 
		
			| Re: Столбец зашифрован в Oracle, нужно расшифровать в SQL Server [сообщение #5837 является ответом на сообщение #5835] | Sat, 21 December 2024 23:26   |  
			| 
				
				
					|  flexgen Сообщений: 27
 Зарегистрирован: July 2022
 | Junior Member |  |  |  
	| Vovaa83 писал(а) Wed, 18 December 2024 21:42  Вопрос такой - можно ли уже получив эти данные и сохранив их в нашу таблицу на SQL server , расшифровать этот столбец уже на нашей стороне?Напрямую, простым копированием, нельзя. Механизмы шифрования/дешифрования в Oracle и в SQL Server разные. Как вариант, можно сделать дамп-файл дешифрованных данных в формате, подходящем для утилиты BCP, сохранить его в каком-то защищенном каталоге с ограниченным доступом, и загрузить при помощи BCP в SQL Server, а потом зашифровать в SQL. Есть немало разного рода решений, ваши безопасники должны их знать. В любом случае, эту проблему надо решать с безопасниками. 
 |  
	|  |  |  
	|  | 
 
 
 Текущее время: Fri Oct 31 15:47:34 GMT+3 2025 
 Общее время, затраченное на создание страницы: 0.01124 секунд |