zoukankan      html  css  js  c++  java
  • Oracle 3DES加密示例

    SET SERVEROUTPUT ON;
    DECLARE
      input_string  VARCHAR2(32) := '12345678';
      ikey          INTEGER := 100001;
      input_raw     RAW(32) := UTL_RAW.CAST_TO_RAW(input_string);
      key_raw       RAW(32);
      encrypted_raw RAW(32);
      encry_key     VARCHAR2(32);
      decrypted_raw RAW(32);
    
    BEGIN
      key_raw := utl_raw.cast_from_binary_integer(ikey) ||
                 utl_raw.bit_complement(utl_raw.cast_from_binary_integer(ikey));
      key_raw := key_raw || utl_raw.bit_xor(key_raw, hextoraw('F0F0F0F0F0F0F0F0'));
      dbms_output.put_line('> ========= Get Key Bytes =========');
      dbms_output.put_line('> Input String: ' || input_string);
      dbms_output.put_line('> Key   String: ' || key_raw);
      dbms_output.put_line('> Key   length: ' || UTL_RAW.length(key_raw));
    
      dbms_output.put_line('> ========= BEGIN TEST Encrypt =========');
      --加密
      encrypted_raw := dbms_obfuscation_toolkit.DES3Encrypt(input => input_raw,
                                                            key   => key_raw,
                                                            iv    => hextoraw('0000000000000000'));
      dbms_output.put_line('> encrypted_raw output: ' || encrypted_raw);
      encry_key := utl_raw.cast_to_varchar2(utl_encode.base64_encode(encrypted_raw));
      dbms_output.put_line('> encry_key     output: ' || encry_key);
      
      --解密
      decrypted_raw := dbms_obfuscation_toolkit.DES3Decrypt(input => encrypted_raw,
                                                            key   => key_raw,
                                                            iv    => hextoraw('0000000000000000'));
      dbms_output.put_line('> decrypted_raw output: ' || utl_raw.cast_to_varchar2(decrypted_raw));
      IF input_string = utl_raw.cast_to_varchar2(decrypted_raw) THEN
        dbms_output.put_line('> String DES Encyption and Decryption successful');
      END IF;
    END;
    /
    

    显示如下:

    > ========= Get Key Bytes =========
    > Input String: 12345678
    > Key   String: 000186A1FFFE795EF0F176510F0E89AE
    > Key   length: 16
    > ========= BEGIN TEST Encrypt =========
    > encrypted_raw output: 9D2A9569D15A07DB
    > encry_key     output: nSqVadFaB9s=
    > decrypted_raw output: 12345678
    > String DES Encyption and Decryption successful
    PL/SQL procedure successfully completed

  • 相关阅读:
    ios数据存储方式FMDB
    ios中的coredata
    编程岗位电话面试问答Top 50[转]
    活动图
    时序图
    用例图
    类图
    Movie
    EasyMock
    cglib应用
  • 原文地址:https://www.cnblogs.com/wqswjx/p/5458837.html
Copyright © 2011-2022 走看看