祝愿大家身体健康!

 站点注册  找回密码
 站点注册

QQ登录

只需一步,快速开始

查看: 9789|回复: 4

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

  [复制链接]

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

  [复制链接]
ehxz

主题

0

回帖

57万

积分

管理员

积分
572904
贡献
在线时间
小时
2007-2-24 13:08:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?站点注册

×

//加密码,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测试通过。

共享共进共赢Sharing And Win-win Results
SYBASEBBS - 免责申明1、欢迎访问“SYBASEBBS.COM”,本文内容及相关资源来源于网络,版权归版权方所有!本站原创内容版权归本站所有,请勿转载!
2、本文内容仅代表作者观点,不代表本站立场,作者自负,本站资源仅供学习研究,请勿非法使用,否则后果自负!请下载后24小时内删除!
3、本文内容,包括但不限于源码、文字、图片等,仅供参考。本站不对其安全性,正确性等作出保证。但本站会尽量审核会员发表的内容。
4、如本帖侵犯到任何版权问题,请立即告知本站 ,本站将及时删除并致以最深的歉意!客服邮箱:admin@sybasebbs.com
hxbkkk

主题

0

回帖

42

积分

注册会员

积分
42
贡献
在线时间
小时
2009-4-17 13:39:13 | 显示全部楼层
鼎一下,缺陷,不等长
共享共进共赢Sharing And Win-win Results
ehxz 楼主

主题

0

回帖

57万

积分

管理员

积分
572904
贡献
在线时间
小时
2009-7-8 22:55:54 | 显示全部楼层
是的。还有就是到10.X后不能用。
共享共进共赢Sharing And Win-win Results
newease

主题

0

回帖

1万

积分

论坛元老

积分
19020
贡献
在线时间
小时
2009-8-5 14:36:09 | 显示全部楼层
不能实现中文字母混合
共享共进共赢Sharing And Win-win Results
lackin

主题

0

回帖

503

积分

高级会员

积分
503
贡献
在线时间
小时
2010-1-22 16:59:26 | 显示全部楼层
11.5不能用。现在公司在用11.5,以前老的算法没用了。要支持中文的。郁闷
共享共进共赢Sharing And Win-win Results
您需要登录后才可以回帖 登录 | 站点注册

本版积分规则

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

Mail To:Admin@SybaseBbs.com

QQ|Archiver|PowerBuilder(PB)BBS社区 ( 鲁ICP备2021027222号-1 )

GMT+8, 2024-5-20 21:46 , Processed in 0.045127 second(s), 10 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表