今天看到一個MD5加密的問題,很多語言都提供了加密函數,oracle也提供MD5加密函數,網上搜了一下,加密函數是:
DBMS_OBFUSCATION_TOOLKIT.MD5(input_string =>'abc')
不過,其參數中出現了一個“=>”符號,那麼這個符號到底什麼意思呢?
oracle實參與形參有二種對應方式:
1、一種是位置方式,和面向對象語言參數傳遞類似;
2、另外一種是=> 作為形參對應,因為位置對應方法有缺限,比如一個函數有四個參數,但第三個是可以不傳(有默認值),這裡就沒辦法位置對應方法,oralce內部一般用此種方法作參數傳遞。
所以上面調用中“=>”符號的意思就是:該函數有很多參數,參數變量input_string賦值為abc,其它參數為默認值。
MD5常用於密碼加密,是一種不可逆的加密(散列)算法,只能加密,不能還原。
MD5用同一值加密的結果每次都一樣,所以可以將用戶的密碼的MD5結果保存在數據庫中。當用戶登錄時,將登陸時的密碼MD5之後和數據庫中的進行比對,如果相同就證明用戶輸入的密碼正確。
MD5的值是可以碰撞的(兩個不同值的MD5結果相同),但幾率非常小。需要注意的是,為了保證加密結果的正確性,要注意不同編程語言字符串的編碼類型。