Imail密码加密算法及VBS实现
程序员文章站
2022-04-10 08:05:57
imail的所有邮局信息,比如用户,密码都实际上都是存储在计算机注册表当中的,所以只需要 打开注册表就可以看到imail里的所有信息,包括用户的密码.细节: imail将企...
imail的所有邮局信息,比如用户,密码都实际上都是存储在计算机注册表当中的,所以只需要
打开注册表就可以看到imail里的所有信息,包括用户的密码.
细节:
imail将企业邮局信息全部存储在:
hkey_local_machine\software\ipswitch\imail\domains\<domainname>\users\<username>
这样一个键里,其中domainname是邮局名,username是用户名,而在<username>下有一个名叫password的键值则是存储的用户密码.密码并不是明文存储的,而是结这了简单的加密运行后生成的,他的加密过程如下:
1.读取用户名,并将其全部转为小写
2.将用户名每个数字转为对应的ascii码
3.计算出用户名里每个字母和第一个字母的偏移量
4.计算出每个密码字母对应的ascii码
5. 将密码的每个ascii码加上参考值(用户名首字母的ascii减去97)再加上用户名对应的偏移量
6.再对应密码表就可以得到密码了.
具体程序如下:
sub initcode(byref infos) '自动生成密码表
count=-97
codearray=array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f")
for z=0 to ubound(codearray)
for y=0 to ubound(codearray)
infos.add cstr(count),codearray(z) & codearray(y)
count=count+1
next
next
end sub
function getimailpassword(user,pass) 'imail密码加密函数
encryptcode=""
set objdict=createobject("scripting.dictionary")
call initcode(objdict)
user=lcase(user) '将用户转为小写
firstchar=left(user,1)
firstcharcode=asc(firstchar) '得到首字母的ascii码
reference=firstcharcode-97 '得到参考值
execute "dim usercode(" & len(user)-1 & ")" '定义两个存放用户与密码ascii的数组
execute "dim passcode(" & len(pass)-1 & ")"
for i=0 to len(user)-1 '取得用户字母的偏移量
uchar=asc(mid(user,i+1,1))
usercode(i)=firstcharcode-uchar
next
for j=0 to len(pass)-1 '取得密码对应的新值
pchar=asc(mid(pass,j+1,1))
ipos=j mod len(user)
passcode(j)=pchar+reference-usercode(ipos)
next
for k=0 to ubound(passcode) '查询密码表,最后得到密码
encryptcode= encryptcode & objdict.item(cstr(passcode(k)))
next
getimailpassword=encryptcode
end function
iuser="web9898" '测试用的imail用户名
ipass="web9898.cn" '测试用的imail密码
wscript.echo ipass & "加密后的密码是:" & getimailpassword(iuser,ipass)
打开注册表就可以看到imail里的所有信息,包括用户的密码.
细节:
imail将企业邮局信息全部存储在:
hkey_local_machine\software\ipswitch\imail\domains\<domainname>\users\<username>
这样一个键里,其中domainname是邮局名,username是用户名,而在<username>下有一个名叫password的键值则是存储的用户密码.密码并不是明文存储的,而是结这了简单的加密运行后生成的,他的加密过程如下:
1.读取用户名,并将其全部转为小写
2.将用户名每个数字转为对应的ascii码
3.计算出用户名里每个字母和第一个字母的偏移量
4.计算出每个密码字母对应的ascii码
5. 将密码的每个ascii码加上参考值(用户名首字母的ascii减去97)再加上用户名对应的偏移量
6.再对应密码表就可以得到密码了.
具体程序如下:
sub initcode(byref infos) '自动生成密码表
count=-97
codearray=array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f")
for z=0 to ubound(codearray)
for y=0 to ubound(codearray)
infos.add cstr(count),codearray(z) & codearray(y)
count=count+1
next
next
end sub
function getimailpassword(user,pass) 'imail密码加密函数
encryptcode=""
set objdict=createobject("scripting.dictionary")
call initcode(objdict)
user=lcase(user) '将用户转为小写
firstchar=left(user,1)
firstcharcode=asc(firstchar) '得到首字母的ascii码
reference=firstcharcode-97 '得到参考值
execute "dim usercode(" & len(user)-1 & ")" '定义两个存放用户与密码ascii的数组
execute "dim passcode(" & len(pass)-1 & ")"
for i=0 to len(user)-1 '取得用户字母的偏移量
uchar=asc(mid(user,i+1,1))
usercode(i)=firstcharcode-uchar
next
for j=0 to len(pass)-1 '取得密码对应的新值
pchar=asc(mid(pass,j+1,1))
ipos=j mod len(user)
passcode(j)=pchar+reference-usercode(ipos)
next
for k=0 to ubound(passcode) '查询密码表,最后得到密码
encryptcode= encryptcode & objdict.item(cstr(passcode(k)))
next
getimailpassword=encryptcode
end function
iuser="web9898" '测试用的imail用户名
ipass="web9898.cn" '测试用的imail密码
wscript.echo ipass & "加密后的密码是:" & getimailpassword(iuser,ipass)
上一篇: PHP实现基于栈的后缀表达式求值功能
下一篇: PHP实现双链表删除与插入节点的方法示例