ehxz 发表于 2007-2-24 13:08:42

PB可用的一个不错的可逆加密算法(PB9测试通过)

<p>//加密码,argument name:<br/>//as_pass,需加密字符串<br/>//as_flag=0:加密 as_flag=1:解密<br/>//<br/>Int li_pos,li_count1,li_EpassLast,li_Asc,li_Epass[]<br/>String ls_pass<br/>If as_flag = 0 Then<br/>//转换字符串为二进制码<br/>li_EpassLast=0<br/>For li_pos=1 To Len(as_pass)<br/>&nbsp; li_Asc=Int(Asc(Mid(as_pass,li_pos,1)))<br/>&nbsp; For li_count1=7 To 0 Step -1<br/>&nbsp;&nbsp; li_EpassLast ++<br/>&nbsp;&nbsp; If li_Asc &gt;= 2^li_count1 Then<br/>&nbsp;&nbsp;&nbsp; li_Epass=1<br/>&nbsp;&nbsp; Else<br/>&nbsp;&nbsp;&nbsp; li_Epass=0<br/>&nbsp;&nbsp; End if&nbsp;&nbsp; <br/>&nbsp;&nbsp; li_Asc=Mod(li_Asc,2^li_count1)<br/>&nbsp; Next<br/>Next<br/>//二进制码换位<br/>For li_pos=1 To Int(li_EpassLast / 2)<br/>&nbsp; li_Asc=li_Epass<br/>&nbsp; li_Epass=li_Epass<br/>&nbsp; li_Epass=li_Asc<br/>Next<br/>//已前半部二进制码异或后半部二进制<br/>For li_pos=1 To Int(li_EpassLast / 2)<br/>&nbsp; If li_Epass = 1 Then<br/>&nbsp;&nbsp; li_Epass=abs(li_Epass - 1)<br/>&nbsp; End if&nbsp; <br/>Next<br/>Else //以上过程之逆过程<br/>li_EpassLast=0<br/>For li_pos=1 To Len(as_pass)<br/>&nbsp; li_Asc=Int(Asc(Mid(as_pass,li_pos,1)))-48<br/>&nbsp; For li_count1=3 To 0 Step -1<br/>&nbsp;&nbsp; li_EpassLast ++<br/>&nbsp;&nbsp; If li_Asc &gt;= 2^li_count1 Then<br/>&nbsp;&nbsp;&nbsp; li_Epass=1<br/>&nbsp;&nbsp; Else<br/>&nbsp;&nbsp;&nbsp; li_Epass=0<br/>&nbsp;&nbsp; End if&nbsp;&nbsp; <br/>&nbsp;&nbsp; li_Asc=Mod(li_Asc,2^li_count1)<br/>&nbsp; Next<br/>Next<br/>For li_pos=1 To Int(li_EpassLast / 2)<br/>&nbsp; If li_Epass = 1 Then<br/>&nbsp;&nbsp; li_Epass=abs(li_Epass - 1)<br/>&nbsp; End if&nbsp; <br/>Next</p><p>For li_pos=1 To Int(li_EpassLast / 2)<br/>&nbsp; li_Asc=li_Epass<br/>&nbsp; li_Epass=li_Epass<br/>&nbsp; li_Epass=li_Asc<br/>Next<br/>End if<br/>//转换二进制码为字符串<br/>If as_flag = 0 Then<br/>li_count1=3<br/>Else<br/>li_count1=7<br/>End if<br/>ls_pass=""<br/>li_Asc=0<br/>For li_pos=1 To li_EpassLast<br/>li_Asc=li_Asc+2^li_count1*li_Epass<br/>li_count1 --<br/>If li_count1=-1 Then <br/>&nbsp; If as_flag = 0 Then<br/>&nbsp;&nbsp; ls_pass=ls_Pass+Char(li_Asc+48)<br/>&nbsp;&nbsp; li_count1=3<br/>&nbsp; Else <br/>&nbsp;&nbsp; ls_pass=ls_Pass+Char(li_Asc)<br/>&nbsp;&nbsp; li_count1=7<br/>&nbsp; End if<br/>&nbsp; li_Asc=0<br/>End if<br/>Next<br/>return ls_pass </p><p></p><p>偶原来找的一些在处理特殊字符的时候有问题,这个目前还没发现此类问题。应该适用于PB所有版本,偶在PB9测试通过。</p>

hxbkkk 发表于 2009-4-17 13:39:13

鼎一下,缺陷,不等长

ehxz 发表于 2009-7-8 22:55:54

是的。还有就是到10.X后不能用。

newease 发表于 2009-8-5 14:36:09

不能实现中文字母混合

lackin 发表于 2010-1-22 16:59:26

11.5不能用。现在公司在用11.5,以前老的算法没用了。要支持中文的。郁闷
页: [1]
查看完整版本: PB可用的一个不错的可逆加密算法(PB9测试通过)

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com