- 相關(guān)推薦
關(guān)于Oracle數(shù)據(jù)庫(kù)替代加密算法
替代密碼算法的原理是使用替代法進(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.--
5.--------------------------------
6.CREATE OR REPLACE PROCEDURE pro_insert(
7. uName IN scott.users.uname%TYPE, --用戶名
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;
【Oracle數(shù)據(jù)庫(kù)替代加密算法】相關(guān)文章:
Oracle數(shù)據(jù)庫(kù)語(yǔ)句大全10-08
ORACLE數(shù)據(jù)庫(kù)碎片的整理08-18
oracle數(shù)據(jù)庫(kù)基本語(yǔ)句08-21
Oracle數(shù)據(jù)庫(kù)認(rèn)證層次08-29
Oracle數(shù)據(jù)庫(kù)的基本介紹09-04
Oracle數(shù)據(jù)庫(kù)SQLPLUS介紹10-09
Oracle數(shù)據(jù)庫(kù)SELECT語(yǔ)句10-25
Oracle 數(shù)據(jù)庫(kù)查詢小技巧10-17