Oracle 上的 SHA-512
SHA-512 on Oracle
我想在 Oracle 12 上使用 SHA-512 加密一些数据。
例如,我想加密这个字符串:
230049008251111
对此:
DA9AA3ACDE64DB3297FF75FDE407DAF3DB7EFF0CDF987C6C16BAF28242997046997EBF5A2F6C4F7449A4936C6518A6FD24A3C0984E9C09BF19395175F1BE2B5F
这是根据 sha512 generator 我正在使用的。
在 Oracle 上执行此操作的最佳方法是什么?
谢谢
Oracle 内置了对 SHA-512 的数据库支持。
如果你想要一个纯 SQL 的解决方案并且你的输入字符串在 SQL 字符串长度限制内(4000 个字符,除非你启用了 12c 扩展 varchar2 语义)你可以这样做:
select standard_hash ( '230049008251111', 'SHA512')
from dual
/
如果您有更长的字符串,Oracle 会提供一个包 DBMS_CRYPTO(不要与已弃用的 DBMS_CRYPTO_TOOLKIT 混淆)。你可以像这样使用它...
declare
str clob;
hsh raw(64);
begin
str := '230049008251111';
hsh := dbms_crypto.hash (str, dbms_crypto.HASH_SH512);
dbms_output.put_line(hsh);
end;
/
... 或对您的应用程序有意义的任何内容。 dbms_crypto.hash()
有三种变体,它们采用 BLOB、CLOB 和 RAW。没有普通旧 varchar2 的变体。不知道为什么。 Find out more。
这两个调用产生相同的输出(如所希望的那样):
DA9AA3ACDE64DB3297FF75FDE407DAF3DB7EFF0CDF987C6C16BAF28242997046997EBF5A2F6C4F7449A4936C6518A6FD24A3C0984E9C09BF19395175F1BE2B5F
正如@WernfriedDomscheit 所观察到的,默认情况下不授予在 DBMS_CRYPTO 上执行。但是,STANDARD_HASH()
是。因此,根据您的要求,您可能需要与您的 DBA 团队合作以获得必要的权限。
我想在 Oracle 12 上使用 SHA-512 加密一些数据。
例如,我想加密这个字符串:
230049008251111
对此:
DA9AA3ACDE64DB3297FF75FDE407DAF3DB7EFF0CDF987C6C16BAF28242997046997EBF5A2F6C4F7449A4936C6518A6FD24A3C0984E9C09BF19395175F1BE2B5F
这是根据 sha512 generator 我正在使用的。 在 Oracle 上执行此操作的最佳方法是什么?
谢谢
Oracle 内置了对 SHA-512 的数据库支持。
如果你想要一个纯 SQL 的解决方案并且你的输入字符串在 SQL 字符串长度限制内(4000 个字符,除非你启用了 12c 扩展 varchar2 语义)你可以这样做:
select standard_hash ( '230049008251111', 'SHA512')
from dual
/
如果您有更长的字符串,Oracle 会提供一个包 DBMS_CRYPTO(不要与已弃用的 DBMS_CRYPTO_TOOLKIT 混淆)。你可以像这样使用它...
declare
str clob;
hsh raw(64);
begin
str := '230049008251111';
hsh := dbms_crypto.hash (str, dbms_crypto.HASH_SH512);
dbms_output.put_line(hsh);
end;
/
... 或对您的应用程序有意义的任何内容。 dbms_crypto.hash()
有三种变体,它们采用 BLOB、CLOB 和 RAW。没有普通旧 varchar2 的变体。不知道为什么。 Find out more。
这两个调用产生相同的输出(如所希望的那样):
DA9AA3ACDE64DB3297FF75FDE407DAF3DB7EFF0CDF987C6C16BAF28242997046997EBF5A2F6C4F7449A4936C6518A6FD24A3C0984E9C09BF19395175F1BE2B5F
正如@WernfriedDomscheit 所观察到的,默认情况下不授予在 DBMS_CRYPTO 上执行。但是,STANDARD_HASH()
是。因此,根据您的要求,您可能需要与您的 DBA 团队合作以获得必要的权限。