马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?站点注册
×
//加密码,argument name: //as_pass,需加密字符串 //as_flag=0:加密 as_flag=1:解密 // Int li_pos,li_count1,li_EpassLast,li_Asc,li_Epass[] String ls_pass If as_flag = 0 Then //转换字符串为二进制码 li_EpassLast=0 For li_pos=1 To Len(as_pass) li_Asc=Int(Asc(Mid(as_pass,li_pos,1))) For li_count1=7 To 0 Step -1 li_EpassLast ++ If li_Asc >= 2^li_count1 Then li_Epass[li_EpassLast]=1 Else li_Epass[li_EpassLast]=0 End if li_Asc=Mod(li_Asc,2^li_count1) Next Next //二进制码换位 For li_pos=1 To Int(li_EpassLast / 2) li_Asc=li_Epass[li_pos] li_Epass[li_pos]=li_Epass[li_EpassLast + 1 - li_pos] li_Epass[li_EpassLast +1 - li_pos]=li_Asc Next //已前半部二进制码异或后半部二进制 For li_pos=1 To Int(li_EpassLast / 2) If li_Epass[li_pos] = 1 Then li_Epass[li_EpassLast + 1 - li_pos]=abs(li_Epass[li_EpassLast + 1 - li_pos] - 1) End if Next Else //以上过程之逆过程 li_EpassLast=0 For li_pos=1 To Len(as_pass) li_Asc=Int(Asc(Mid(as_pass,li_pos,1)))-48 For li_count1=3 To 0 Step -1 li_EpassLast ++ If li_Asc >= 2^li_count1 Then li_Epass[li_EpassLast]=1 Else li_Epass[li_EpassLast]=0 End if li_Asc=Mod(li_Asc,2^li_count1) Next Next For li_pos=1 To Int(li_EpassLast / 2) If li_Epass[li_pos] = 1 Then li_Epass[li_EpassLast + 1 - li_pos]=abs(li_Epass[li_EpassLast + 1 - li_pos] - 1) End if Next For li_pos=1 To Int(li_EpassLast / 2) li_Asc=li_Epass[li_pos] li_Epass[li_pos]=li_Epass[li_EpassLast + 1 - li_pos] li_Epass[li_EpassLast +1 - li_pos]=li_Asc Next End if //转换二进制码为字符串 If as_flag = 0 Then li_count1=3 Else li_count1=7 End if ls_pass="" li_Asc=0 For li_pos=1 To li_EpassLast li_Asc=li_Asc+2^li_count1*li_Epass[li_pos] li_count1 -- If li_count1=-1 Then If as_flag = 0 Then ls_pass=ls_Pass+Char(li_Asc+48) li_count1=3 Else ls_pass=ls_Pass+Char(li_Asc) li_count1=7 End if li_Asc=0 End if Next return ls_pass 偶原来找的一些在处理特殊字符的时候有问题,这个目前还没发现此类问题。应该适用于PB所有版本,偶在PB9测试通过。 |