Oracle數(shù)據(jù)庫(kù)替代加密算法 |
發(fā)布時(shí)間: 2012/8/13 16:37:33 |
替代密碼算法的原理是使用替代法進(jìn)行加密,就是將明文中的字符用其它字符替代 后形成密文。例如:明文字母a、b、c、d ,用D、E、F、G做對(duì)應(yīng)替換后形成密文。 這里在Oracle的存儲(chǔ)過(guò)程,通過(guò)替換加密算法來(lái)實(shí)現(xiàn)密碼存入數(shù)據(jù)庫(kù)時(shí)的加密。 1.-------------------------------- 2.-------------------------------- 3.--Oracle數(shù)據(jù)庫(kù)加密----替代算法--- 4.--http://nileader.blog.51cto.com 5.-------------------------------- 6.CREATE OR REPLACE PROCEDURE pro_insert( 7. uName IN scott.users.uname%TYPE, --用戶(hù)名 8. uPwd IN scott.users.upwd%TYPE --密碼,這個(gè)要加密 9.) IS 10.BEGIN 11. 12.--定義變量 13.DECLARE 14. insertSQL nvarchar2(200 ); --一個(gè)待構(gòu)造的sql語(yǔ)句 15. key numeric(2); --密鑰 16. totalLetter numeric(2); --字母的總個(gè)數(shù) 17. targetCode nvarchar2(15); --轉(zhuǎn)化后的字符密碼表示 18. lengthUpwd numeric(2); --密碼長(zhǎng)度 19. initCodeVal numeric(3); --原始密碼每位上字符對(duì)應(yīng)的數(shù)值 20. targetCodeVal numeric(3); 21. BEGIN 22. 23. key := 3; --密鑰賦值 24. totalLetter := 26; --字母總數(shù) 25. targetCode := ''; --轉(zhuǎn)化后的字符 26. 27. 28. --獲取初始密鑰的長(zhǎng)度 29. lengthUpwd := LENGTH(uPwd); 30. 31. --逐個(gè)對(duì)初始密鑰進(jìn)行加密 32. FOR i IN 1..lengthUpwd 33. LOOP 34. 35. initCodeVal := ASCII(SUBSTR(uPwd,i,1) ) -96 ; 36. --如果替代后的字母超過(guò)了z 37. targetCodeVal := MOD((initCodeVal + key), totalLetter ); 38. 39. --如果是字母z 40. IF targetCodeVal = 0 THEN 41. targetCodeVal := 26; 42. END IF; 43. 44. targetCodeVal := targetCodeVal + 96; 45. 46. --將加密后的字符拼裝 47. targetCode := targetCode || CHR(targetCodeVal); 48. END LOOP; 49. 50. --構(gòu)造一個(gè)sql語(yǔ)句 51. insertSQL := 'INSERT INTO users (uName, uPwd ) VALUES(''' 52. ||uName||''','''||targetCode||''')'; 53. EXECUTE IMMEDIATE TO_CHAR(insertSQL); 54. 55. END; 56.END pro_insert; 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |