Мой секретный пароль в Oracle не будет выводиться - PullRequest
1 голос
/ 25 апреля 2019

Я пытаюсь вывести свою процедуру с секретным паролем. Когда я пытаюсь запустить свой код, он не работает.

CREATE OR replace Procedure hiddenPasswords(
       p_MA_ID IN MitarbeiterAccounts.MitarbetierAccountID%TYPE,
       p_M_Login IN MitarbeiterAccounts.Mitarbeiter_Login%TYPE,
       p_M_Password IN MitarbeiterAccounts.Mitarbeiter_Password%TYPE)


IS
BEGIN

        INSERT INTO MitarbeiterAccounts(MitarbeiterAccountsID, 
         MitarbeiterAccounts_Login, Mitarbeiter_Password)
        VALUES(p_MA_ID, p_M_Login, HASHBYTES('SHA2_512', p_M_Password));

END;
/

EXEC hiddenPasswords p_MA_ID = 4, p_M_Login = 'Admin' p_M_Password = N'123';

Я получаю, что HASHBYTES неверный идентификатор

1 Ответ

3 голосов
/ 25 апреля 2019

Что ж, в Oracle нет встроенной функции с именем HASHBYTES. Он есть в SQL SERVER , но не в Oracle

Вместо этого вы можете использовать DBMS_CRYPTO.HASH, если у вас есть эта привилегия для того же.

DBMS_CRYPTO предоставляет интерфейс для шифрования и дешифрования хранимых данных и может использоваться вместе с программами PL / SQL, выполняющими сетевые коммуникации

DBMS_CRYPTO

Обновление

Например, я использовал RAW здесь. Вы можете проверить другие Overloaded functions по ссылке выше, где вы также можете использовать BLOB, CLOB.

DECLARE
 l_pwd VARCHAR2(19) := 'mysecretpassword';
 l_ccn_raw RAW(128) := utl_raw.cast_to_raw(l_pwd);
 l_encrypted_raw RAW(2048);
BEGIN
  dbms_output.put_line('CC:  ' || l_ccn_raw);

  l_encrypted_raw := dbms_crypto.hash(l_ccn_raw, 1);
  dbms_output.put_line('MD4: ' || l_encrypted_raw);

  l_encrypted_raw := dbms_crypto.hash(l_ccn_raw, 2);
  dbms_output.put_line('MD5: ' || l_encrypted_raw);

  l_encrypted_raw := dbms_crypto.hash(l_ccn_raw, 3);
  dbms_output.put_line('SH1: ' || l_encrypted_raw);
END;
/

OUTPUT

CC:  6D7973656372657470617373776F7264
MD4: BBBA2CBC2F6E0F158D06B34F819DB5F6
MD5: 4CAB2A2DB6A3C31B01D804DEF28276E6
SH1: 08CD923367890009657EAB812753379BDB321EEB
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...