f_psw_bczh.srf 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. $PBExportHeader$f_psw_bczh.srf
  2. global type f_psw_bczh from function_object
  3. end type
  4. forward prototypes
  5. global function string f_psw_bczh (string obj_string, integer add_expr, string keystr)
  6. end prototypes
  7. global function string f_psw_bczh (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. obj_string = trim(obj_string)
  15. STR_LEN = Len(obj_string)
  16. //IF STR_LEN=0 THEN RETURN ''
  17. //FORMAT_STR=RIGHT(STRING(Pi(10)/1.11111,'0.###############'),15)
  18. FORMAT_STR = keystr
  19. IF Len(FORMAT_STR) > 0 THEN
  20. IF add_expr = 0 THEN
  21. FOR LS_YY = 1 To (STR_LEN/Len(FORMAT_STR))+1
  22. ZH_STR = ZH_STR+FORMAT_STR
  23. NEXT
  24. ELSE
  25. FOR LS_YY = 1 To ((STR_LEN/3)/Len(FORMAT_STR))+1
  26. ZH_STR = ZH_STR+FORMAT_STR
  27. NEXT
  28. END IF
  29. END IF
  30. IF add_expr = 0 THEN //ADD
  31. FOR LS_XX = 1 TO STR_LEN
  32. RT_STRING = RT_STRING+String(999 - Integer(Mid(ZH_STR,LS_XX,1))^2 * 9 - Asc(Mid (obj_string,LS_XX,1)) ,'000') //
  33. NEXT
  34. RT_STRING = Reverse(RT_STRING)
  35. IF RT_STRING = '' THEN RT_STRING = '3003003003'
  36. ELSE //EXPR
  37. IF obj_string = '3003003003' THEN
  38. RT_STRING = ''
  39. ELSEIF obj_string = '' THEN
  40. // RT_STRING = '12233445'
  41. RT_STRING = ''
  42. ELSE
  43. obj_string = Reverse(obj_string)
  44. FOR LS_XX = 1 TO STR_LEN/3
  45. //MESSAGEBOX(STRINASC(Mid (obj_string,LS_XX*3 - 2,3)))
  46. IF Integer(Mid (obj_string,LS_XX*3 - 2,3)) = 0 THEN
  47. RT_STRING = RT_STRING+String(Asc(Mid (obj_string,LS_XX*3 - 2,3))*13)
  48. ELSE
  49. RT_STRING = RT_STRING+Char(999 - Integer(Mid(ZH_STR,LS_XX,1))^2 * 9 - Integer(Mid (obj_string,LS_XX*3 - 2,3)) ) //
  50. END IF
  51. NEXT
  52. END IF
  53. END IF
  54. RETURN RT_STRING
  55. end function