gameck13 2013年08月06日
哪位大神帮帮忙啦在线等EnPas函数转C#类
最近做一个网站改版,旧数据是asp中CFS编码加密,小弟解决到最后一层加密EnPas函数
时候卡住,哪位老大帮帮忙,我传入二次加密字符串"d99e33a642209c61",最终经过EnPas加密后得到"200774A0859C78B85577C268015E8D"就对了,下面是那个函数,哪位老大帮改成C#类,急等,在线!
<%
Function EnPas(CodeStr)

Dim CodeLen
Dim CodeSpace
Dim NewCode,cecr,cecb,cec

CodeLen = 30 //说明加密的明文小于等于30字节
CodeSpace = CodeLen - Len(CodeStr) //30减去MD5长度(MD5长度应该不变的)

If Not CodeSpace < 1 Then //取反
For cecr = 1 To CodeSpace //如果小于1 循环补位 chr(21)
CodeStr = CodeStr & Chr(21) //如果明文长度不足30,把字符串补足30位(模256)这里是chr()之后用不用ANSI字码我不清楚
Next
End If

NewCode = 1

Dim Been
For cecb = 1 To CodeLen //循环30次

Been = CodeLen + Asc(Mid(CodeStr,cecb,1)) * cecb //30 + 每位的asscii X 位数的值(和雷驰移位差不多)
NewCode = NewCode * Been //1X得到的数,结果应该是最后一个数的值
Next

CodeStr = NewCode //取新进入下次计算
NewCode = Empty

For cec = 1 To Len(CodeStr)
NewCode = NewCode & CfsCode(Mid(CodeStr,cec,3)) //循环取每位并转换成ASCii 在转换成16进制。
Next

For cec = 20 To Len(NewCode) - 18 Step 2 //循环起始位20,终止的长度是上面计算出来的代码长度减去18在除2(循环次数)
EnPas = EnPas & Mid(NewCode,cec,1) //循环相应长度的字符
Next

End Function

Function CfsCode(Word) //取每位转换成16进制
dim cc
For cc = 1 To Len(Word)
CfsCode = CfsCode & Asc(Mid(Word,cc,1))
Next
CfsCode = Hex(CfsCode)
End Function
%>
...全文
110 点赞 收藏 14
写回复
14 条回复

还没有回复,快来抢沙发~

发动态
发帖子
C#
创建于2007-09-28

8.4w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告