powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Чем проще всего зашифровать?
25 сообщений из 40, страница 1 из 2
Чем проще всего зашифровать?
    #39502607
Sintetik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть задача замаскировать некоторые varchar поля в таблицах, не все столбцы целиком, а в отдельных строчках. Условно скрыть данные части справочника.
1. Шифрование нужно одностороннее, без возможности обратной расшифровки, без хранения ключей где бы то ни было.
2. должна быть повторяемость, т.е. если "Иванов И.И." шифруется в "876nf854^%&" то это должно быть всегда, а не каждый раз в новую строку

чем проще всего?

2модератор
создал две одинаковые темы в разных разделах сознательно, решение нужно и для Ora и для MS
...
Рейтинг: 0 / 0
Чем проще всего зашифровать?
    #39502616
Andrey.L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SintetikЕсть задача замаскировать некоторые varchar поля в таблицах, не все столбцы целиком, а в отдельных строчках. Условно скрыть данные части справочника.
1. Шифрование нужно одностороннее, без возможности обратной расшифровки, без хранения ключей где бы то ни было.
2. должна быть повторяемость, т.е. если "Иванов И.И." шифруется в "876nf854^%&" то это должно быть всегда, а не каждый раз в новую строку

чем проще всего?

2модератор
создал две одинаковые темы в разных разделах сознательно, решение нужно и для Ora и для MS
Хэширование, но не функцией ORA_HASH.
Надеюсь значения в мс-е и оракле не должны быть одинаковы.
...
Рейтинг: 0 / 0
Чем проще всего зашифровать?
    #39502618
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sintetik,
dbms_crypto
...
Рейтинг: 0 / 0
Чем проще всего зашифровать?
    #39502619
Sintetik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey.LНадеюсь значения в мс-е и оракле не должны быть одинаковы.
нет не должны, есть ключевые поля если что
...
Рейтинг: 0 / 0
Чем проще всего зашифровать?
    #39502630
Sintetik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envSintetik,
dbms_crypto
Data of type VARCHAR2 must be converted to RAW before you can use DBMS_CRYPTO functions to encrypt it.

а без конвертации как-то можно? и в SQL запросах чтобы использовать
...
Рейтинг: 0 / 0
Чем проще всего зашифровать?
    #39502635
Andrey.L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SintetikenvSintetik,
dbms_crypto
Data of type VARCHAR2 must be converted to RAW before you can use DBMS_CRYPTO functions to encrypt it.

а без конвертации как-то можно? и в SQL запросах чтобы использовать
utl_raw
Код: plsql
1.
select dbms_crypto.hash(utl_raw.cast_to_raw(dummy), md5) from dual
...
Рейтинг: 0 / 0
Чем проще всего зашифровать?
    #39502662
Sintetik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey.L,
а потом обратно в varchar потому что нужно записать на место оригинала
пойдет, не миллионы строк шифруем
...
Рейтинг: 0 / 0
Чем проще всего зашифровать?
    #39502665
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey.L,
а ничего что хэш не уникальный ?
...
Рейтинг: 0 / 0
Чем проще всего зашифровать?
    #39502669
Азагаш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
123ййAndrey.L,
а ничего что хэш не уникальный ?
разве на осмысленной информации повторы случаются?
...
Рейтинг: 0 / 0
Чем проще всего зашифровать?
    #39502687
Andrey.L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Азагаш123ййAndrey.L,
а ничего что хэш не уникальный ?
разве на осмысленной информации повторы случаются?
Да, случаются. Чем длиннее результат, тем реже. Поэтому я и не рекомендовал использовать функцию ORA_HASH еще в самом начале.
...
Рейтинг: 0 / 0
Чем проще всего зашифровать?
    #39502734
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
очередной велосипед:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
with t as
 (select 'Иванов И.И.' as str
    from dual
  union all
  select 'Петров П.П.' as str
    from dual
    union all
   select 'Smith J.' as str
    from dual ),
crypt as (    
select (chr(ascii(substr(str,level,1))/level+2)) sym, str
  from t
connect by level <= length(str)
       and prior str = str
       and prior dbms_random.value is not null)
select listagg(sym,'') within group (order by str) as crypto_str, str from crypt group by str 
...
Рейтинг: 0 / 0
Чем проще всего зашифровать?
    #39502788
Andrey.L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fogel,

Думаю, вот это "без возможности обратной расшифровки" начальное условие невыполнимо.
...
Рейтинг: 0 / 0
Чем проще всего зашифровать?
    #39502796
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey.LFogel,

Думаю, вот это "без возможности обратной расшифровки" начальное условие невыполнимо.

потерять (умышленно) открытый ключ, расшифровть станет если не невозможно, то достаточно трудно

.....
stax
...
Рейтинг: 0 / 0
Чем проще всего зашифровать?
    #39502798
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey.LFogel,

Думаю, вот это "без возможности обратной расшифровки" начальное условие невыполнимо.
делов-то, замени в запросе level+2 на dbms_random.value
...
Рейтинг: 0 / 0
Чем проще всего зашифровать?
    #39502800
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FogelAndrey.LFogel,

Думаю, вот это "без возможности обратной расшифровки" начальное условие невыполнимо.
делов-то, замени в запросе level+2 на dbms_random.value
лучше на dbms_random.value+1 - результат будет приятней взгляду
...
Рейтинг: 0 / 0
Чем проще всего зашифровать?
    #39502809
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FogelAndrey.LFogel,

Думаю, вот это "без возможности обратной расшифровки" начальное условие невыполнимо.
делов-то, замени в запросе level+2 на dbms_random.value

автор2. должна быть повторяемость,

повторяемость останется?

.....
stax
...
Рейтинг: 0 / 0
Чем проще всего зашифровать?
    #39502863
Andrey.L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StaxAndrey.LFogel,

Думаю, вот это "без возможности обратной расшифровки" начальное условие невыполнимо.

потерять (умышленно) открытый ключ, расшифровть станет если не невозможно, то достаточно трудно

.....
stax
Предлагаешь код Fogel'а обернуть в функцию, заврапить эту функцию, а автора расстрелять?
...
Рейтинг: 0 / 0
Чем проще всего зашифровать?
    #39502889
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sintetik,
DBMS_OBFUSCATION_TOOLKIT.MD5
...
Рейтинг: 0 / 0
Чем проще всего зашифровать?
    #39502897
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StaxFogelпропущено...

делов-то, замени в запросе level+2 на dbms_random.value

автор2. должна быть повторяемость,

повторяемость останется?

.....
stax
нет

ответ уже дали на вопрос
Sintetik чем проще всего?
20711061

а это был "велосипед"
ну можно и повторяемость при "невосстанавливаемости" обеспечить, даже не зная про "ключ" шифрования.
простым дедовским методом прямого соответствия.
только надо определить границы номерных кодов, используемых в словах - см. жёлтым
и по всему массиву заменяемых данных пройти за 1 раз
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
with t as
 (select 'Иванов И.И.' as str, dbms_random.value as pk_rowid
    from dual
  union all
  select 'Петров П.П.' as str, dbms_random.value as pk_rowid
    from dual
  union all
  select 'Smith J.' as str, dbms_random.value as pk_rowid
    from dual
    union all
  select 'Петров П.П.' as str, dbms_random.value as pk_rowid
    from dual),
t_s as
 (select level order_s, substr(str, level, 1) sym, str, pk_rowid 
    from t
  connect by level <= length(str)
         and prior str = str
         and prior pk_rowid = pk_rowid
         and prior dbms_random.value is not null),
C_key as
 (select chr(level) as o_s, chr((level + 10) / (dbms_random.value + 1)) c_s
    from dual
  connect by level <= 
69536)
select listagg(k.c_s, '') within group(order by t_s.str, pk_rowid, t_s.order_s) as crypto_str,
       t_s.str
  from t_s, C_key k
 where t_s.sym = k.o_s
 group by pk_rowid, t_s.str 
...
Рейтинг: 0 / 0
Чем проще всего зашифровать?
    #39502906
Озо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vint,

А он разве не устарел?
...
Рейтинг: 0 / 0
Чем проще всего зашифровать?
    #39502955
Sergei.Agalakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Берешь начальную строку, и шифруешь её AES256 используя её же как пароль. Можно по вкусу reverse, XOR и т.д. добавить. Короткие строки можно будет взломать подбором, поэтому желательно добить размер начальной строки до минимум 16 символов.
...
Рейтинг: 0 / 0
Чем проще всего зашифровать?
    #39503443
dba123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sintetik,

Если всё делать аккуратно в ту же varchar2 колонку,
используя dbms_crypto, то зашифрованная запись может не поместиться после
Код: plsql
1.
update t set c = utl_encode.base64_encode(encoded_c).
...
Рейтинг: 0 / 0
Чем проще всего зашифровать?
    #39503505
Sintetik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Staxпотерять (умышленно) открытый ключ, расшифровть станет если не невозможно, то достаточно трудно
нет задачи получить сверхстойкий к взлому шифр, нужно чтобы пионэры в лоб нахаляву за полчаса не расшифровали.
...
Рейтинг: 0 / 0
Чем проще всего зашифровать?
    #39503539
Азагаш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sintetikнет задачи получить сверхстойкий к взлому шифр, нужно чтобы пионэры в лоб нахаляву за полчаса не расшифровали.
если снизились требования к первому пункту, может и со вторым не стоит усердствовать. я, конечно не люблю быть рукожопом, но для маркетушек в моей ТС, пытающихся анализировать активность покупателей по номерам дисконтных карт, на самом деле не очень важно, 23 раза конкретный покупатель тарился или 24 из-за того, что хэш совпал. я бы на доступном массиве проверил, так ли уж часты повторы и уже от этого отталкивался.
...
Рейтинг: 0 / 0
Чем проще всего зашифровать?
    #39503558
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Азагаш,
взять конкатенацию двух разных хешив (ф-ций),
то что два разных алгоритма одновременно дадут дубли вероятнось мизерная

.....
stax
...
Рейтинг: 0 / 0
25 сообщений из 40, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Чем проще всего зашифровать?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]