2013-05-30 59 views
4

我有一個柱:需要一個預言函數CONVER串的字節數組

LOGIN_PWD -> RAW(256 BYTE) 

我必須使用一個插入查詢中插入一個散列的口令字符串此列。那麼,有沒有可以隱蔽的一個字符串,以字節像

INSERT INTO TABLE_NAME (LOGIN_PWD) VALUES (convert.toBytes('hashed password')); 

我沒有用string.getBytes()梅索德我的本地計算機上,但對於其它ENV我不能使用同一程序使用這個java程序需要任何Oracle功能做到這一點使用查詢

+1

你的意思是這樣[cast_to_raw(http://docs.oracle.com/cd/E11882_01/appdev.112/e25788/u_raw.htm#sthref17499)?我不太確定你是否試圖在同一時間散列,或者如果這個值已經散列了。 –

+0

是的,我的意思是說像cast_to_bytes和價值已經hased –

回答

8

如果您的要求很簡單,只要你說,那麼你可以使用UTL_RAW.CAST_TO_RAW function

INSERT INTO TABLE_NAME (LOGIN_PWD) 
VALUES (UTL_RAW.CAST_TO_RAW('hashed password')); 

SQL Fiddle demo

用,例如,普通字符串「散列密碼」使用MD5,這是6a25a2b265d917ea91447daa81b2506d,存儲在表的原始值被散列:

SELECT DUMP(LOGIN_PWD) FROM TABLE_NAME; 

DUMP(LOGIN_PWD) 
------------------------------------------------------------------------------------------------------------------ 
Typ=23 Len=32: 54,97,50,53,97,50,98,50,54,53,100,57,49,55,101,97,57,49,52,52,55,100,97,97,56,49,98,50,53,48,54,100 

它匹配我從getBytes()得到相同Java中的散列值。

如果你想要得到它回到文本出於某種原因,你可以使用UTL_RAW.CAST_TO_VARCHAR2

SELECT UTL_RAW.CAST_TO_VARCHAR2(LOGIN_PWD)FROM TABLE_NAME;

UTL_RAW.CAST_TO_VARCHAR2(LOGIN_PWD) 
----------------------------------- 
6a25a2b265d917ea91447daa81b2506d 
相關問題