PB加密解密方法

global type f_encrypt from function_object 
end type 

forward prototypes 
global function string f_encrypt (string st_text, string st_key) 
end prototypes 

global function string f_encrypt (string st_text, string st_key);//************************************************************** 
// Function:     uf_pub_encrypt()                * 
// Descirption:  用给定的密钥加密字符串         * 
// Parameters:   string   st_text   待加密字串      * 
//               string   st_key    密钥        * 
//                                               * 
// Return:     <加密后字串>                        * 
//                                               * 
// Author:     rain                           * 
// Date:       2002.11.05                        * 
//************************************************************** 


string st_textencrypt 
long lg_textlen,lg_keylen,lg_key 
long lg_loop 

IF isnull(st_key) OR isnull(st_text) THEN RETURN '' 

lg_keylen = len(st_key) 
FOR lg_loop = 1 TO lg_keylen 
lg_key = lg_key + (asc(mid(st_key,lg_loop,1)) * lg_loop) 
IF lg_key > 255 THEN lg_key = lg_key - 255 
NEXT 

DO While lg_key > 255 
lg_key = lg_key - 255 
LOOP 

LONG lg_cbyte 

lg_textlen = Len(st_text) 

FOR lg_loop = 1 TO lg_textlen 
lg_cbyte = asc(mid(st_text,lg_loop,1)) + lg_key 
IF lg_cbyte > 255 THEN lg_cbyte = lg_cbyte - 255 
st_textencrypt = st_textencrypt + char(lg_cbyte) 
lg_key = lg_key + lg_cbyte 
IF lg_key > 255 THEN lg_key = lg_key - 255 
NEXT 

RETURN st_textencrypt 
end function 


//解密 
global type f_decrypt from function_object 
end type 

forward prototypes 
global function string f_decrypt (string st_text, string st_key) 
end prototypes 

global function string f_decrypt (string st_text, string st_key);//************************************************************** 
// Function:     uf_pub_decrypt()                * 
// Descirption:  用给定的密钥解密字符串,与uf_pub_encrypt相对 * 
// Parameters:   string   st_text   待解密字串      * 
//               string   st_key    密钥        * 
//                                               * 
// Return:     <解密后字串>                        * 
//                                               * 
// Author:     rain                           * 
// Date:       2002.11.05                        * 
//************************************************************** 

string st_textdecrypt 
IF isnull(st_key) OR isnull(st_text) THEN RETURN '' 
long lg_textlen,lg_keylen,lg_key 
long lg_loop 

lg_keylen = len(st_key) 

FOR lg_loop = 1 TO lg_keylen 
lg_key = lg_key + (asc(mid(st_key,lg_loop,1)) * lg_loop) 
IF lg_key>255 THEN lg_key = lg_key - 255 
NEXT 

DO While lg_key>255 
lg_key = lg_key - 255 
LOOP 

lg_textlen = len(st_text) 

long lg_cbyte 
FOR lg_loop = 1 TO lg_textlen 
lg_cbyte = asc(mid(st_text,lg_loop,1)) - lg_key 
IF lg_cbyte<0 THEN lg_cbyte = lg_cbyte + 255 
st_textdecrypt = st_textdecrypt + char(lg_cbyte) 
lg_key = lg_key + asc(mid(st_text,lg_loop,1)) 
IF lg_key > 255 THEN lg_key = lg_key - 255 
NEXT 

RETURN st_textdecrypt 
end function 

发布了18 篇原创文章 · 获赞 47 · 访问量 47万+

猜你喜欢

转载自blog.csdn.net/tlammon/article/details/100179482