我使用 Dbms_Obfuscation_Toolkit.Des3encrypt() 进行加密时发现如果我的字符串里含有"#"时加密结果有问题。
例如我加密 123#aaa  得到 6D19A4A8969A4A34   (key 为 oracle9i)
然后再解密就只得到了 123 ,后面的aaa就没了。
问下各位大牛,这是什么原因,怎么处理啊?

解决方案 »

  1.   

    好奇,测试了一把,似乎跟#没关系可能用到的不是同一个,呵呵。SQL> exec dbms_output.put_line(rawtohex(dbms_obfuscation_toolkit.des3encrypt(INPUT => UTL_RAW.CAST_TO_RAW('123#abcd'),KEY => UTL_RAW.CAST_TO_RAW('123#abcdasdfasdf'))));
    B9E0CB12E98DF18EPL/SQL 过程已成功完成。SQL>
    SQL> exec dbms_output.put_line(UTL_RAW.CAST_TO_VARCHAR2(dbms_obfuscation_toolkit.des3decrypt(INPUT => hextoraw('B9E0CB12E98DF18E'),KEY => UTL_RAW.CAST_TO_RAW('123#abcdasdfasdf'))));
    123#abcdPL/SQL 过程已成功完成。