zoukankan      html  css  js  c++  java
  • EBS密码加密研究

    

    DECLARE
      v_password_1 VARCHAR2(240);
      v_password_2 VARCHAR2(240);
      v_password_3 VARCHAR2(240);

    BEGIN
      v_password_1 := 'CxY-1234567-AbC';
      dbms_output.put_line('加密前:' || v_password_1);
      --加密
      v_password_2 := cux_password_demo.password_encrypt(p_passwd => v_password_1);

      dbms_output.put_line('加密后:' || v_password_2);
      --解密
      v_password_3 := cux_password_demo.password_decrypt(p_passwd => v_password_2);

      dbms_output.put_line('解密后:' || v_password_3);
    END;



    CREATE OR REPLACE PACKAGE cux_password_demo AS
      /*==================================================
      -- Author  : CXY5632
      -- Created : 2014/2/20 18:04:03
      -- Purpose : 密码加密解密演示
     
                        
      ==============================================*/

      FUNCTION decrypt(key IN VARCHAR2, VALUE IN VARCHAR2) RETURN VARCHAR2;

      FUNCTION encrypt(key IN VARCHAR2, VALUE IN VARCHAR2) RETURN VARCHAR2;

      FUNCTION password_encrypt(p_passwd IN VARCHAR2) RETURN VARCHAR2;

      FUNCTION password_decrypt(p_passwd IN VARCHAR2) RETURN VARCHAR2;

    END cux_password_demo;
    /
    CREATE OR REPLACE PACKAGE BODY cux_password_demo AS
      /*==================================================
      -- Author  : CXY5632
      -- Created : 2014/2/20 18:04:03
      -- Purpose : 密码加密解密演示
     
                        
      ==============================================*/

      FUNCTION decrypt(key IN VARCHAR2, VALUE IN VARCHAR2) RETURN VARCHAR2 AS
        LANGUAGE JAVA NAME 'oracle.apps.fnd.security.WebSessionManagerProc.decrypt(java.lang.String,java.lang.String) return java.lang.String';

      FUNCTION encrypt(key IN VARCHAR2, VALUE IN VARCHAR2) RETURN VARCHAR2 AS
        LANGUAGE JAVA NAME 'oracle.apps.fnd.security.WebSessionManagerProc.encrypt(java.lang.String,java.lang.String) return java.lang.String';

      /* =============================================
      *   FUNCTION
      *   NAME :
      *         password_decrypt
      *   DESCRIPTION:
      *         暗文解密
      *   ARGUMENT:
      *         p_passwd : 需要解密的暗文解密
      *   RETURN:
      *      
      *   HISTORY:
      *     1.00   2014-02-20   cxy   Creation
      * =============================================*/
      FUNCTION password_decrypt(p_passwd IN VARCHAR2) RETURN VARCHAR2 IS
        l_decrypted_passwd VARCHAR2(100);
      BEGIN
        SELECT decrypt((SELECT (SELECT decrypt(fnd_web_sec.get_guest_username_pwd,
                                              usertable.encrypted_foundation_password)
                                 FROM dual) AS apps_password
                         FROM apps.fnd_user usertable
                        WHERE usertable.user_name =
                              (SELECT substr(fnd_web_sec.get_guest_username_pwd,
                                             1,
                                             instr(fnd_web_sec.get_guest_username_pwd,
                                                   '/') - 1)
                                 FROM dual)),
                       p_passwd)
          INTO l_decrypted_passwd
          FROM dual;
        RETURN l_decrypted_passwd;
      EXCEPTION
        WHEN OTHERS THEN
          RAISE fnd_api.g_exc_unexpected_error;
      END password_decrypt;

      /* =============================================
      *   FUNCTION
      *   NAME :
      *         password_encrypt
      *   DESCRIPTION:
        *         明文加密
      *   ARGUMENT:
      *         p_passwd : 需要加密的明文
      *   RETURN:
      *      
      *   HISTORY:
      *     1.00   2014-02-20   cxy   Creation
      * =============================================*/
      FUNCTION password_encrypt(p_passwd IN VARCHAR2) RETURN VARCHAR2 IS
        l_encrypted_passwd VARCHAR2(100);
      BEGIN
        SELECT encrypt((SELECT (SELECT decrypt(fnd_web_sec.get_guest_username_pwd,
                                              usertable.encrypted_foundation_password)
                                 FROM dual) AS apps_password
                         FROM apps.fnd_user usertable
                        WHERE usertable.user_name =
                              (SELECT substr(fnd_web_sec.get_guest_username_pwd,
                                             1,
                                             instr(fnd_web_sec.get_guest_username_pwd,
                                                   '/') - 1)
                                 FROM dual)),
                       p_passwd)
          INTO l_encrypted_passwd
          FROM dual;
        RETURN l_encrypted_passwd;
      EXCEPTION
        WHEN OTHERS THEN
          RAISE fnd_api.g_exc_unexpected_error;
      END password_encrypt;

    END cux_password_demo;
    /

  • 相关阅读:
    开题
    kafka介绍原理
    xxl-job
    多线程使用
    基础
    linux命令
    oracle id 自增
    feign调用远程服务 并传输媒体类型
    复杂sql mybatis查询
    开源easyExcel应用
  • 原文地址:https://www.cnblogs.com/wanghang/p/6299329.html
Copyright © 2011-2022 走看看