美文网首页我爱编程
oracle加密的用法即注意事项

oracle加密的用法即注意事项

作者: 南柯一梦00 | 来源:发表于2018-02-01 17:37 被阅读370次

    1.oracle中base64编码说明

    oracle的base64签名并不像编程语言或者mysql的base64签名那样直观,
    在编程语言或许你只需要base64("编码内容")就好了,但是在oracle当中要达到相同的效果,需要经历三个步骤:如下

    BEGIN
      DBMS_OUTPUT.PUT_LINE(
          utl_raw.cast_to_varchar2(
              utl_encode.BASE64_ENCODE(
                  UTL_RAW.CAST_TO_RAW('test'))));
    END;
    

    2.AES加密

    oracle自带多种加密算法,但加密算法一般由三部分组合而成
    密钥位数:AES192 DBMS_CRYPTO.ENCRYPT_AES192
    连接方式:CBC DBMS_CRYPTO.CHAIN_CBC
    填充方式:PKCS5 DBMS_CRYPTO.PAD_PKCS5

    单纯的AES加密过后,返回的为16进制字符串

    --AES加密
    BEGIN
      DBMS_OUTPUT.PUT_LINE(
          dbms_crypto.Encrypt(
              UTL_RAW.CAST_TO_RAW(--待加密内容需转换成RAW类型,否则会报错
                'test'--待加密内容
              ),
              dbms_crypto.AES_CBC_PKCS5,--密钥位数+连接方式+填充方式
              '12345678901234561234567890123456'--秘钥
    ));
    END;
    

    单纯的经过aes加密后的结果:


    aes加密.png

    一般情况下,先经过aes加密,再经过base64签名,这样得到的内容比较小,能节省空间

    --aes加密过后再经过base64进行签名
    BEGIN
      DBMS_OUTPUT.PUT_LINE(
          utl_raw.cast_to_varchar2(
              UTL_ENCODE.BASE64_ENCODE(
                  dbms_crypto.Encrypt(UTL_RAW.CAST_TO_RAW('test'),
                                      dbms_crypto.AES_CBC_PKCS5,
                                      '12345678901234561234567890123456'))
          ));
    END;
    
    aes加密过后再经过base64签名的结果.png

    3AES解密

    解密可以看做加密的逆向处理过程,先将密文由base64解签,再解密,解密后转换成RAW对象便能恢复加密前的效果;当然解密的密钥得和加密的密钥一致

    BEGIN
      DBMS_OUTPUT.PUT_LINE(
      utl_raw.cast_to_varchar2(
          dbms_crypto.Decrypt(utl_encode.BASE64_DECODE(UTL_RAW.CAST_TO_RAW('edgjBzMCq0lLXpXir7+Fcg==')),
                              dbms_crypto.AES_CBC_PKCS5,
                              '12345678901234561234567890123456')));
    END;
    
    aes解密的效果图.png

    相关文章

      网友评论

        本文标题:oracle加密的用法即注意事项

        本文链接:https://www.haomeiwen.com/subject/lgndzxtx.html