f_psw_bczh_rpt.srf 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. $PBExportHeader$f_psw_bczh_rpt.srf
  2. global type f_psw_bczh_rpt from function_object
  3. end type
  4. forward prototypes
  5. global function string f_psw_bczh_rpt (string obj_string, integer add_expr, string keystr)
  6. end prototypes
  7. 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) 三倍变长加密,可以用于任意字符串
  8. //obj_string 目标的处理字符串
  9. //add_expr 0 :加密,1:解密
  10. //keystr 密钥数字字符串
  11. IF ISNULL(obj_string) THEN RETURN obj_string
  12. INT LS_XX,STR_LEN,LS_YY
  13. STRING RT_STRING='',ZH_STR='',FORMAT_STR
  14. STR_LEN=len(obj_string)
  15. //IF STR_LEN=0 THEN RETURN ''
  16. //FORMAT_STR=RIGHT(STRING(Pi(10)/1.11111,'0.###############'),15)
  17. FORMAT_STR=keystr
  18. IF len(FORMAT_STR)>0 THEN
  19. IF add_expr=0 THEN
  20. FOR LS_YY=1 TO (STR_LEN/len(FORMAT_STR))+1
  21. ZH_STR=ZH_STR+FORMAT_STR
  22. NEXT
  23. ELSE
  24. FOR LS_YY=1 TO ((STR_LEN/3)/len(FORMAT_STR))+1
  25. ZH_STR=ZH_STR+FORMAT_STR
  26. NEXT
  27. END IF
  28. END IF
  29. IF add_expr=0 THEN //ADD
  30. FOR LS_XX=1 TO STR_LEN
  31. RT_STRING=RT_STRING+string(999 - INTEGER(MID(ZH_STR,LS_XX,1))^2 * 9 - ASC(Mid (obj_string,LS_XX,1)) ,'000')//
  32. NEXT
  33. RT_STRING=Reverse(RT_STRING)
  34. IF RT_STRING='' THEN RT_STRING='3003003003'
  35. ELSE //EXPR
  36. IF obj_string='3003003003' THEN
  37. RT_STRING=''
  38. ELSE
  39. obj_string=Reverse(obj_string)
  40. FOR LS_XX=1 TO STR_LEN/3
  41. //MESSAGEBOX(STRINASC(Mid (obj_string,LS_XX*3 - 2,3)))
  42. if INTEGER(Mid (obj_string,LS_XX*3 - 2,3))=0 then
  43. RT_STRING=RT_STRING+string(asc(Mid (obj_string,LS_XX*3 - 2,3))*13)
  44. else
  45. RT_STRING=RT_STRING+CHAR(999 - INTEGER(MID(ZH_STR,LS_XX,1))^2 * 9 - INTEGER(Mid (obj_string,LS_XX*3 - 2,3)) )//
  46. end if
  47. NEXT
  48. END IF
  49. END IF
  50. return RT_STRING
  51. end function