-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path脚本.txt
70 lines (57 loc) · 1.7 KB
/
脚本.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
//身份证验证
create or replace function getVerify_ISO7064(
idcard in varchar2
) return varchar
as
type vi_TYPE is varray(11) of varchar2(1);
vi vi_TYPE := vi_TYPE('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
v_num number;
v_sum number;
begin
if idcard is null then return null ; end if;
v_sum := 0;
v_num := length(idcard);
for i in 1 .. v_num loop
v_sum := v_sum + (power(2,v_num -i+1) mod 11 ) * to_number(substr(idcard,i,1));
-- DBMS_OUTPUT.PUT_LINE(v_sum);
end loop;
v_sum := v_sum mod 11;
return vi(v_sum+1);
end getVerify_ISO7064;
//解密函数
create or replace function JM_decryption(name in varchar2) return varchar2 is
Result varchar2(400);
ls_sql varchar2(4000);
v_length number := (length(name) - 2) / 9;
v_mm varchar2(4000);
m number;
begin
begin
for i in 1 .. v_length loop
m:= i * 7 - 6;
ls_sql := 'select a.key from jm a where a.pass =substr(regexp_replace(''' || name || ''', ''\^1V6|V6'', ''''), ' || m || ', 7)';
execute immediate ls_sql into v_mm;
Result := Result || v_mm;
end loop;
exception when others then Result := '';
end;
return(Result);
end;
//加密函数
create or replace function JM_encryption(name in varchar2) return varchar2 is
Result varchar2(400);
ls_sql varchar2(4000);
v_length number:=length(name);
v_mm varchar2(4000);
v_am varchar2(4000);
begin
begin
for i in 1..v_length loop
ls_sql:='select substr('''||name||''','||i||',1) from dual ';
execute immediate ls_sql into v_mm;
ls_sql:='select a.pass from jm a where a.key='''||v_mm||'''';
execute immediate ls_sql into v_am;
Result:=Result||'V6'||v_am;
end loop;
exception when others then Result:=''; end ; return(Result);
end ;