$PBExportHeader$f_psw_bczh_rpt.srf global type f_psw_bczh_rpt from function_object end type forward prototypes global function string f_psw_bczh_rpt (string obj_string, integer add_expr, string keystr) end prototypes global function string f_psw_bczh_rpt (string obj_string, integer add_expr, string keystr);//f_psw_BCzh(STRING obj_string,INT add_expr,STRING keystr) 三倍变长加密,可以用于任意字符串 //obj_string 目标的处理字符串 //add_expr 0 :加密,1:解密 //keystr 密钥数字字符串 IF ISNULL(obj_string) THEN RETURN obj_string INT LS_XX,STR_LEN,LS_YY STRING RT_STRING='',ZH_STR='',FORMAT_STR STR_LEN=len(obj_string) //IF STR_LEN=0 THEN RETURN '' //FORMAT_STR=RIGHT(STRING(Pi(10)/1.11111,'0.###############'),15) FORMAT_STR=keystr IF len(FORMAT_STR)>0 THEN IF add_expr=0 THEN FOR LS_YY=1 TO (STR_LEN/len(FORMAT_STR))+1 ZH_STR=ZH_STR+FORMAT_STR NEXT ELSE FOR LS_YY=1 TO ((STR_LEN/3)/len(FORMAT_STR))+1 ZH_STR=ZH_STR+FORMAT_STR NEXT END IF END IF IF add_expr=0 THEN //ADD FOR LS_XX=1 TO STR_LEN RT_STRING=RT_STRING+string(999 - INTEGER(MID(ZH_STR,LS_XX,1))^2 * 9 - ASC(Mid (obj_string,LS_XX,1)) ,'000')// NEXT RT_STRING=Reverse(RT_STRING) IF RT_STRING='' THEN RT_STRING='3003003003' ELSE //EXPR IF obj_string='3003003003' THEN RT_STRING='' ELSE obj_string=Reverse(obj_string) FOR LS_XX=1 TO STR_LEN/3 //MESSAGEBOX(STRINASC(Mid (obj_string,LS_XX*3 - 2,3))) if INTEGER(Mid (obj_string,LS_XX*3 - 2,3))=0 then RT_STRING=RT_STRING+string(asc(Mid (obj_string,LS_XX*3 - 2,3))*13) else RT_STRING=RT_STRING+CHAR(999 - INTEGER(MID(ZH_STR,LS_XX,1))^2 * 9 - INTEGER(Mid (obj_string,LS_XX*3 - 2,3)) )// end if NEXT END IF END IF return RT_STRING end function