Oracle SQL Выберите шестнадцатеричное значение для SHA256 - PullRequest
0 голосов
/ 18 марта 2020

Существует определенный столбец c (hex_values) в таблице, где все значения (строки) закодированы как base16 (HEX).

Можно ли ВЫБРАТЬ все члены hex_values ​​и принести результат, уже хэшированный SHA256?

Например:

 -------------------------
|       HEX_VALUES        |
 -------------------------
| 70617373776f7264313233a | //password123 (HEX)
 -------------------------  
| 31323370617373776f7264a | //123password (HEX)
 ------------------------- 
| 6c6f72656d697073756d    | //loremipsum (HEX)
 ------------------------- 
| 6d7970617373776f7264    | //mypassword (HEX)
 ------------------------- 

И запрос SQL будет делать вся работа, как это (пример строки 1):

70617373776f7264313233a (строка HEX) → password123 (обычная строка) → sha256 (password123) (гигантская строка)

Итак, результат этого SQL Запрос будет:

 -------------------------
|       HEX_VALUES        |
 -------------------------
| sha256(password123)     | 
 -------------------------  
| sha256(123password)     | 
 ------------------------- 
| sha256(loremipsum)      | 
 ------------------------- 
| sha256(mypassword)      | 
 ------------------------- 

Я знаю, что могу:

1) Выбрать hex_values ​​(Oracle SQL)

2) После SQL Запрос: преобразование в обычную строку → SHA256 (обычная строка)

Но я> действительно <нужно сделать это без использования какого-либо другого исходного кода, кроме Oracle SQL. </p>

Ответы [ 2 ]

0 голосов
/ 18 марта 2020

В конце концов, это то, что у меня сработало:

 SELECT 
    standard_hash(
      UTL_RAW.CAST_TO_VARCHAR2(HEXTORAW(HEX_VALUES)),
      'SHA256'
    ) 
    FROM ELBAT
0 голосов
/ 18 марта 2020

В Oracle 12 и выше есть функция standard_hash(), которую вы можете использовать. Используйте hextoraw() в строках, затем передайте это значение standard_hash().

SELECT standard_hash(hextoraw(hex_values), 'SHA256')
       FROM elbat;

И, кстати, SHA256 - это алгоритм хеширования, а не алгоритм шифрования. Таким образом, не существует такого понятия, как «SHA256 зашифрованные» значения.

...