oracle加密的用法即注意事項(xiàng)

1.oracle中base64編碼說明

oracle的base64簽名并不像編程語言或者mysql的base64簽名那樣直觀,
在編程語言或許你只需要base64("編碼內(nèi)容")就好了,但是在oracle當(dāng)中要達(dá)到相同的效果,需要經(jīng)歷三個(gè)步驟:如下

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

2.AES加密

oracle自帶多種加密算法,但加密算法一般由三部分組合而成
密鑰位數(shù):AES192 DBMS_CRYPTO.ENCRYPT_AES192
連接方式:CBC DBMS_CRYPTO.CHAIN_CBC
填充方式:PKCS5 DBMS_CRYPTO.PAD_PKCS5

單純的AES加密過后,返回的為16進(jìn)制字符串

--AES加密
BEGIN
  DBMS_OUTPUT.PUT_LINE(
      dbms_crypto.Encrypt(
          UTL_RAW.CAST_TO_RAW(--待加密內(nèi)容需轉(zhuǎn)換成RAW類型,否則會報(bào)錯(cuò)
            'test'--待加密內(nèi)容
          ),
          dbms_crypto.AES_CBC_PKCS5,--密鑰位數(shù)+連接方式+填充方式
          '12345678901234561234567890123456'--秘鑰
));
END;

單純的經(jīng)過aes加密后的結(jié)果:


aes加密.png

一般情況下,先經(jīng)過aes加密,再經(jīng)過base64簽名,這樣得到的內(nèi)容比較小,能節(jié)省空間

--aes加密過后再經(jīng)過base64進(jìn)行簽名
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加密過后再經(jīng)過base64簽名的結(jié)果.png

3AES解密

解密可以看做加密的逆向處理過程,先將密文由base64解簽,再解密,解密后轉(zhuǎn)換成RAW對象便能恢復(fù)加密前的效果;當(dāng)然解密的密鑰得和加密的密鑰一致

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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容