陆续有很多网友email我索取我以前写的《mysql5存储过程编写实践》一文中所对应的解密存储过程,这次我把它列出来供需 要的朋友参考,其实这个加解密函数在一些简单应用中还是比较有用武之地的。
函数的源码列出如下:
--
-- Function `aurora`.`fun_submm`
--
DROP FUNCTION IF EXISTS `fun_submm`;
DELIMITER $$
CREATE FUNCTION `fun_submm`(inpass varchar(11)) RETURNS varchar(10)
BEGIN
declare string_in varchar(39) default '';
declare string_out varchar(39) default '';
declare offset tinyint(2) default 0;
declare outpass varchar(30) default '';
declare len tinyint default 0;
/*declare ch char(1) default '';*/
/**/
set len=LENGTH(inpass);
if((len<=0) or (len>11)) then
return "";
end if;
set string_out='YN8K1JOZVURB3MDETS5GPL27AXWIHQ94C6F0#$_';
set string_in='_$#ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
set offset=INSTR(string_out,SUBSTRING(inpass,1,1));
insert into testtb value(offset,'offset');
set @i=0;
REPEAT
set @i=@i+1;
set @ch=SUBSTRING(inpass,@i+1,1);
insert into testtb value(@i,@ch);
set @pos=INSTR(string_out,@ch);
set @pos=(@pos+39-offset) mod 39;
insert into testtb value(@i,@pos);
set outpass=CONCAT(outpass,SUBSTR(string_in,@pos,1));
insert into testtb value(@i,outpass);
UNTIL (@i>=len-1)
end REPEAT;
return outpass;
END $$
DELIMITER ;
至于过程,做简单的改造即可,在此久步赘述了。