oracle dbms_crypto,DBMS_CRYPTO包对Oracle加密

SQL> DECLARE

2    input_string     VARCHAR2(30) := '需要加密的内容';

3    raw_input        RAW(128) := UTL_RAW.CAST_TO_RAW(input_string);

4    --将需要加密的内容转换成RAW格式

5    raw_key          RAW(256);

6    encrypted_raw    RAW(2048);

7    encrypted_string VARCHAR2(2048);

8    decrypted_raw    RAW(2048);

9    decrypted_string VARCHAR2(2048);

10

11  BEGIN

12    dbms_output.put_line('> ========= Get Key Bytes =========');

13

14    raw_key := dbms_crypto.randombytes(24);

15    --随机生成的48位字符密匙

16    dbms_output.put_line('> Key String length: ' || UTL_RAW.LENGTH(raw_key));

17    dbms_output.put_line('> Key String: ' || UTL_RAW.CAST_TO_VARCHAR2(raw_key));

18    dbms_output.put_line('> Input String: ' || input_string);

19    dbms_output.put_line('> ========= BEGIN TEST Encrypt =========');

20    --加密

21    encrypted_raw := dbms_crypto.Encrypt(src => raw_input,

22                                         typ => DBMS_CRYPTO.DES3_CBC_PKCS5,

23                                         key => raw_key);

24

25    dbms_output.put_line('> Encrypted hex value : ' || rawtohex(UTL_RAW.CAST_TO_RAW(encrypted_raw)));

26    dbms_output.put_line('> Encrypted varchar2 value: ' || UTL_RAW.CAST_TO_VARCHAR2(encrypted_raw));

27    --解密

28    decrypted_raw := dbms_crypto.Decrypt(src => encrypted_raw,

29                                         typ => DBMS_CRYPTO.DES3_CBC_PKCS5,

30                                         key => raw_key);

31    --将解密后的RAW转换成String

32    decrypted_string := UTL_RAW.CAST_TO_VARCHAR2(decrypted_raw);

33

34    dbms_output.put_line('> Decrypted string output : ' || decrypted_string);

35

36    if input_string = decrypted_string THEN

37      dbms_output.put_line('> String DES Encyption and Decryption successful');

38    END if;

39  END;

40  /

> ========= Get Key Bytes =========

> Key String length: 24

> Key String: 峈报T??崛╭顋卖I~漥?篻

> Input String: 需要加密的内容

> ========= BEGIN TEST Encrypt =========

> Encrypted hex value : 374132424133453633303945433530364534414334443943303346343735303643464630393330313436454441443930

> Encrypted varchar2 value: z+f0炁洮M?魎橡?F憝

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值