- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
捕获 SQLException::java.sql.SQLException:ORA-29532:Java 调用因未捕获的 Java 异常而终止:java.sql.SQLException:无法获取服务器访问帐户详细信息:ORA-28817:PL/SQL 函数返回错误.
ORA-06512:位于“SYS.DBMS_CRYPTO_FFI”,第 67 行
ORA-06512:位于“SYS.DBMS_CRYPTO”,第 44 行
ORA-06512:位于“NM.CIPHER”,第 41 行
ORA-06512:位于“NM.DEVICE_ACCOUNT”,第 176 行
ORA-06512: 在第 1 行
ORA-06512:位于“NM.DEVICE_PROCEDURES”,第 8 行
ORA-06512: 在第 1 行
<小时/>create or replace PACKAGE BODY CIPHER IS
seven_bytes RAW(7) := HEXTORAW ('00000000000000');
FUNCTION make_8_bytes ( p_string IN RAW ) RETURN RAW IS
v_length PLS_INTEGER := MOD(utl_raw.length (p_string),8);
BEGIN
IF v_length = 0 THEN
RETURN p_string;
ELSE
RETURN utl_raw.concat (p_string,utl_raw.substr(seven_bytes,1,8-v_length));
END IF;
END;
FUNCTION encrypt ( p_string IN VARCHAR2,
p_key IN RAW ) RETURN RAW IS
encrypted_raw RAW(2048);
l_mod number := dbms_crypto.ENCRYPT_DES
+ dbms_crypto.CHAIN_CBC
+ dbms_crypto.PAD_PKCS5;
BEGIN
--dbms_obfuscation_toolkit.DESEncrypt(input => make_8_bytes (utl_raw.cast_to_raw(p_string)),key => make_8_bytes (p_key), encrypted_data => encrypted_raw );
encrypted_raw:= dbms_crypto.encrypt(src => make_8_bytes (utl_raw.cast_to_raw(p_string)),typ => l_mod, key => make_8_bytes (p_key));
RETURN encrypted_raw;
EXCEPTION
WHEN OTHERS THEN
v_errm:=SUBSTR(SQLERRM,1,200);
END;
FUNCTION decrypt ( p_string IN RAW,
p_key IN RAW ) RETURN VARCHAR2 IS
decrypted_raw RAW(2048);
l_ret varchar2 (2000);
l_mod number := dbms_crypto.ENCRYPT_DES
+ dbms_crypto.CHAIN_CBC
+ dbms_crypto.PAD_PKCS5;
BEGIN
-- dbms_obfuscation_toolkit.DESDecrypt(input => p_string,key => make_8_bytes (p_key), decrypted_data => decrypted_raw );
decrypted_raw:= dbms_crypto.Decrypt(src => p_string,typ => l_mod,key => make_8_bytes (p_key));
l_ret:= UTL_I18N.RAW_TO_CHAR(decrypted_raw, 'AL32UTF8');
RETURN l_ret;
--RETURN rtrim(utl_raw.cast_to_varchar2(decrypted_raw),chr(0));
EXCEPTION
WHEN OTHERS THEN
v_errm:=SUBSTR(SQLERRM,1,200);
END;
END CIPHER;
最佳答案
我尝试了你的代码,结果是肯定的。
当我使用不同的 key 进行加密和解密时,会引发错误。
请参阅下面的示例:
加密和解密的 key 相同:
SELECT
CIPHER.DECRYPT(CIPHER.ENCRYPT('stackoverflow', UTL_RAW.CAST_TO_RAW('123')), UTL_RAW.CAST_TO_RAW('123'))
FROM
DUAL;
加密和解密的不同 key :
SELECT
CIPHER.DECRYPT(CIPHER.ENCRYPT('stackoverflow', UTL_RAW.CAST_TO_RAW('123')), UTL_RAW.CAST_TO_RAW('1234'))
FROM
DUAL;
关于java - 使用 DBMS_CRYPTO 但使用 dbms_obfuscation_toolkit 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56575073/
我正在使用 DBMS_CRYPTO 来保护信息以防发生数据库泄露。 key 不存储在 dbms 中,而是由应用程序在每次访问时提供。 select decrypt(name), seq order b
我正在使用 Oracle Database 11g 企业版版本 11.2.00.40 - 64 位生产版。我们有一个初始管理员用户,将在安装过程中通过插入表来在数据库中创建该用户。此操作需要使用 SH
我在我的 oracle 过程中使用 dbms_crypto.encrypt 函数来加密密码。我已连接到 oracle 为: connect sqlplus as sysdba 然后授予权限: gran
捕获 SQLException::java.sql.SQLException:ORA-29532:Java 调用因未捕获的 Java 异常而终止:java.sql.SQLException:无法获取服
我在 Oracle 中使用 dbms_crypto.hash() 函数时遇到问题。 我使用 sqlplus 作为“sys/passwd 作为 sysdba”连接到数据库服务器,然后我安装了 dbms_
我目前正在使用 DBMS_CRYPTO.HASH 对我的 Oracle 数据库中的密码字段进行哈希处理。然而,此时,我需要让我的 Java 应用程序能够以类似于 MySQL 的方式验证用户输入的密码。
我需要用 C# 重写一个包,但我受困于此加密函数 l_DEcrypted := dbms_crypto.DEcrypt ( src => l_ss
使用 DBMS_CRYPTO.ENCRYPT 过程时,初始化 vector 是否有最小/最大长度?我收到以下错误: ORA-28817: PL/SQL function returned an err
我是一名优秀的程序员,十分优秀!