Varcharのハッシュを取得するために、PL/SQLでハッシュ関数を探しています。 Oracle 10で、関数dbms_crypto.hashおよびその他のパッケージdbms_sqlhash.getHashを含むdbms_cryptoというパッケージを見つけましたが、それらを呼び出すと、見つからないというメッセージが表示されます...
誰かが私がそれらを呼び出すことができる方法を知っていますか?他にパッケージはありますか?
これが私のコードです
DECLARE
l_textToHash VARCHAR2(19) := 'toto123';
l_ccn_raw RAW(128) := utl_raw.cast_to_raw(l_textToHash);
l_encrypted_raw RAW(2048);
BEGIN
dbms_output.put_line('CC: ' || l_ccn_raw);
l_encrypted_raw := dbms_crypto.hash(l_ccn_raw, 3);
dbms_output.put_line('SH1: ' || l_encrypted_raw);
END;
/
これがメッセージです
Error starting at line 1 in command:
DECLARE
l_textToHash VARCHAR2(19) := 'toto123';
l_ccn_raw RAW(128) := utl_raw.cast_to_raw(l_textToHash);
l_encrypted_raw RAW(2048);
BEGIN
dbms_output.put_line('CC: ' || l_ccn_raw);
l_encrypted_raw := dbms_crypto.hash(l_ccn_raw, 3);
dbms_output.put_line('SH1: ' || l_encrypted_raw);
END;
Error report:
ORA-06550: line 7, column 22:
PLS-00201: identifier 'DBMS_CRYPTO' must be declared
ORA-06550: line 7, column 3:
PL/SQL: Statement ignored
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
ありがとう!
接続しているユーザーに適切な権限が付与されていることを確認してください。 DBAに相談して、SYS.DBMS_CRYPTOパッケージに実行権限を追加してください。
Oracleは、Oracleデータベースを使用したハッシュおよび暗号化されたデータの操作に関する優れた ガイド を提供します。
DBMS_CRYPTOをサポートしていない古いバージョンのデータベースを使用している場合は、DBMS_OBFUSCATION_TOOLKITを試すこともできます。
Oracle 12cでは、関数 STANDARD_HASH を使用できます。
ハッシュを生成しようとしている理由によっては、組み込み関数ORA_HASHで十分な場合があります。
SQL> select ora_hash( 'fuzzy bunny' ) from dual;
ORA_HASH('FUZZYBUNNY')
----------------------
2519249214
暗号的に安全なハッシュ関数が必要な場合は、これを使用しようとはしません。ただし、単純なハッシュが必要な場合は、これで十分です。