下面这段代码为PB代码,是实现密码加密和解密的。小弟现在需要用java来实现!哪位高手帮忙一下。非常感谢!string ls_lockpasswd,ls_unlockpasswd,ls_returnpasswd,ls_tmppwd
string ls_serialno[],ls_tmpserialno,ls_run
int li_i,li_j,li_time,li_pwdlen,li_partpwdlen
string ls_mod = '!'
//vs_passwd='ABCDEF'
if lower(vs_runway) = 'lock' then //给可见密码加密变为隐形密码
li_pwdlen = len(vs_passwd)
if li_pwdlen < 1 or isnull(vs_passwd) then
messagebox('提示','传入错误的可见密码!')
return '-1'
end if
if mod(li_pwdlen,2) <> 0 then
ls_mod = '^'
vs_passwd = ls_mod + vs_passwd
li_pwdlen = len(vs_passwd)
end if
li_partpwdlen = 0.5*li_pwdlen //1.随机产生n位的序列号码
li_j = 1
do while li_j <= 144
ls_serialno[li_j] = ''
li_i = 1
ls_run = 'T'
do while li_i <= li_pwdlen
do while ls_run = 'T'
ls_tmpserialno = char(64+Rand(li_pwdlen))
if pos(ls_serialno[li_j],ls_tmpserialno) > 0 then
ls_run = 'T'
else
ls_run = 'F'
end if
loop
ls_serialno[li_j] = ls_serialno[li_j]+ls_tmpserialno
li_i = li_i + 1
ls_run = 'T'
loop
li_j = li_j + 1
loop
li_time =integer(mid(string(now(),'hh:mm:ss'),1,2)) +integer(mid(string(now(),'hh:mm:ss'),4,2))+integer(mid(string(now(),'hh:mm:ss'),7,2))
if li_time = 0 then
li_time = rand(144)
end if
//ls_serialno[li_time]='645231' //2.按随机产生n位的序列号码给可见密码重新排序
li_i = 1
ls_tmppwd=''
do while li_i <= li_pwdlen
ls_tmppwd=ls_tmppwd+mid(ls_serialno[li_time],li_i,1)+mid(vs_passwd,asc(mid(ls_serialno[li_time],li_i,1))- 64,1)
li_i = li_i +1
loop //ls_tmppwd='3C4D1A2B6F5E'
ls_lockpasswd=''
if mod(asc(mid(ls_tmppwd,1,1)), 2 ) = 0 then
li_i = 1
do while li_i <= li_partpwdlen
//one=one+two
ls_lockpasswd=ls_lockpasswd+right('000'+string(asc(mid(ls_tmppwd,(li_i - 1)*4+1,1))+asc(mid(ls_tmppwd,(li_i - 1)*4+2,1))),3)
//two=two
ls_lockpasswd=ls_lockpasswd+right('000'+string(asc(mid(ls_tmppwd,(li_i - 1)*4+2,1))),3)
//three=three
ls_lockpasswd=ls_lockpasswd+right('000'+string(asc(mid(ls_tmppwd,(li_i - 1)*4+3,1))),3)
//four=three+four
ls_lockpasswd=ls_lockpasswd+right('000'+string(asc(mid(ls_tmppwd,(li_i - 1)*4+3,1))+asc(mid(ls_tmppwd,(li_i - 1)*4+4,1))),3) li_i= li_i + 1 loop
else
li_i = 1
do while li_i <= li_partpwdlen
//one=one改到这里201211221809
ls_lockpasswd=ls_lockpasswd+right('000'+string(asc(mid(ls_tmppwd,(li_i - 1)*4+1,1))),3)
//two=one+two
ls_lockpasswd=ls_lockpasswd+right('000'+string(asc(mid(ls_tmppwd,(li_i - 1)*4+1,1))+asc(mid(ls_tmppwd,(li_i - 1)*4+2,1))),3)
//three=three+four
ls_lockpasswd=ls_lockpasswd+right('000'+string(asc(mid(ls_tmppwd,(li_i - 1)*4+3,1))+asc(mid(ls_tmppwd,(li_i - 1)*4+4,1))),3)
//four=four
ls_lockpasswd=ls_lockpasswd+right('000'+string(asc(mid(ls_tmppwd,(li_i - 1)*4+4,1))),3)
li_i= li_i + 1
loop
end if
if ls_mod = '^' then
ls_lockpasswd=ls_mod+right('000'+string(asc(mid(ls_tmppwd,1,1))),3)+ls_lockpasswd
else
ls_lockpasswd=right('000'+string(asc(mid(ls_tmppwd,1,1))),3)+ls_lockpasswd
end if
ls_returnpasswd = ls_lockpasswdelseif lower(vs_runway) = 'unlock' then //给隐形密码解密变为可见密码
if mid(vs_passwd,1,1) = '^' then
li_pwdlen = len(vs_passwd) - 4
ls_mod = '^'
else
li_pwdlen = len(vs_passwd) - 3
ls_mod = '!'
end if
if mod(li_pwdlen,6) <> 0 or li_pwdlen < 9 or isnull(vs_passwd) then
messagebox('提示','传入错误的隐形密码!')
return '-1'
end if if mid(vs_passwd,1,1) = '^' then
li_pwdlen = mod(asc(char(integer(mid(vs_passwd,2,3)))),2)
vs_passwd=mid(vs_passwd,5)
else
li_pwdlen = mod(asc(char(integer(mid(vs_passwd,1,3)))),2)
vs_passwd=mid(vs_passwd,4)
end if if li_pwdlen = 0 then
li_pwdlen = len(vs_passwd)
li_partpwdlen = li_pwdlen / 12
ls_tmppwd=''
li_i = 1
do while li_i <= li_partpwdlen
/*
one=one+two
two=two
three=three
four=three+four
*/
//one=one - two
ls_tmppwd=ls_tmppwd+char(integer(mid(vs_passwd,(li_i - 1)*12+1,3)) - integer(mid(vs_passwd,(li_i - 1)*12+4,3)))
//tow=two
ls_tmppwd=ls_tmppwd+char(integer(mid(vs_passwd,(li_i - 1)*12+4,3)))
//three=three
ls_tmppwd=ls_tmppwd+char(integer(mid(vs_passwd,(li_i - 1)*12+7,3)))
//four=four - three
ls_tmppwd=ls_tmppwd+char(integer(mid(vs_passwd,(li_i - 1)*12+10,3)) - integer(mid(vs_passwd,(li_i - 1)*12+7,3)))
li_i= li_i + 1
loop
else
li_pwdlen = len(vs_passwd)
li_partpwdlen = li_pwdlen / 12
ls_tmppwd=''
li_i = 1 /* one=one
two=one+two
three=three+four
four=four
*/
do while li_i <= li_partpwdlen
//one=one
ls_tmppwd=ls_tmppwd+char(integer(mid(vs_passwd,(li_i - 1)*12+1,3)))
//two=two - one
ls_tmppwd=ls_tmppwd+char(integer(mid(vs_passwd,(li_i - 1)*12+4,3)) - integer(mid(vs_passwd,(li_i - 1)*12+1,3)))
//three=three - four
ls_tmppwd=ls_tmppwd+char(integer(mid(vs_passwd,(li_i - 1)*12+7,3)) - integer(mid(vs_passwd,(li_i - 1)*12+10,3)))
//four=four
ls_tmppwd=ls_tmppwd+char(integer(mid(vs_passwd,(li_i - 1)*12+10,3)))
li_i= li_i + 1
loop
end if
//ls_tmppwd='6F4D5E2B3C1A'
li_i = 1
li_partpwdlen = li_partpwdlen * 2
ls_unlockpasswd=space(li_partpwdlen)
do while li_i <= li_partpwdlen
li_j = asc(mid(ls_tmppwd,(li_i - 1)*2 + 1,1)) - 64
ls_unlockpasswd = Replace(ls_unlockpasswd, li_j, 1, mid(ls_tmppwd,li_i*2,1))
li_i = li_i +1
loop
//ls_unlockpasswd='ABCDEF'
if ls_mod = '^' then
ls_returnpasswd = mid(ls_unlockpasswd,2)
else
ls_returnpasswd = ls_unlockpasswd
end if
end if
return ls_returnpasswd
string ls_serialno[],ls_tmpserialno,ls_run
int li_i,li_j,li_time,li_pwdlen,li_partpwdlen
string ls_mod = '!'
//vs_passwd='ABCDEF'
if lower(vs_runway) = 'lock' then //给可见密码加密变为隐形密码
li_pwdlen = len(vs_passwd)
if li_pwdlen < 1 or isnull(vs_passwd) then
messagebox('提示','传入错误的可见密码!')
return '-1'
end if
if mod(li_pwdlen,2) <> 0 then
ls_mod = '^'
vs_passwd = ls_mod + vs_passwd
li_pwdlen = len(vs_passwd)
end if
li_partpwdlen = 0.5*li_pwdlen //1.随机产生n位的序列号码
li_j = 1
do while li_j <= 144
ls_serialno[li_j] = ''
li_i = 1
ls_run = 'T'
do while li_i <= li_pwdlen
do while ls_run = 'T'
ls_tmpserialno = char(64+Rand(li_pwdlen))
if pos(ls_serialno[li_j],ls_tmpserialno) > 0 then
ls_run = 'T'
else
ls_run = 'F'
end if
loop
ls_serialno[li_j] = ls_serialno[li_j]+ls_tmpserialno
li_i = li_i + 1
ls_run = 'T'
loop
li_j = li_j + 1
loop
li_time =integer(mid(string(now(),'hh:mm:ss'),1,2)) +integer(mid(string(now(),'hh:mm:ss'),4,2))+integer(mid(string(now(),'hh:mm:ss'),7,2))
if li_time = 0 then
li_time = rand(144)
end if
//ls_serialno[li_time]='645231' //2.按随机产生n位的序列号码给可见密码重新排序
li_i = 1
ls_tmppwd=''
do while li_i <= li_pwdlen
ls_tmppwd=ls_tmppwd+mid(ls_serialno[li_time],li_i,1)+mid(vs_passwd,asc(mid(ls_serialno[li_time],li_i,1))- 64,1)
li_i = li_i +1
loop //ls_tmppwd='3C4D1A2B6F5E'
ls_lockpasswd=''
if mod(asc(mid(ls_tmppwd,1,1)), 2 ) = 0 then
li_i = 1
do while li_i <= li_partpwdlen
//one=one+two
ls_lockpasswd=ls_lockpasswd+right('000'+string(asc(mid(ls_tmppwd,(li_i - 1)*4+1,1))+asc(mid(ls_tmppwd,(li_i - 1)*4+2,1))),3)
//two=two
ls_lockpasswd=ls_lockpasswd+right('000'+string(asc(mid(ls_tmppwd,(li_i - 1)*4+2,1))),3)
//three=three
ls_lockpasswd=ls_lockpasswd+right('000'+string(asc(mid(ls_tmppwd,(li_i - 1)*4+3,1))),3)
//four=three+four
ls_lockpasswd=ls_lockpasswd+right('000'+string(asc(mid(ls_tmppwd,(li_i - 1)*4+3,1))+asc(mid(ls_tmppwd,(li_i - 1)*4+4,1))),3) li_i= li_i + 1 loop
else
li_i = 1
do while li_i <= li_partpwdlen
//one=one改到这里201211221809
ls_lockpasswd=ls_lockpasswd+right('000'+string(asc(mid(ls_tmppwd,(li_i - 1)*4+1,1))),3)
//two=one+two
ls_lockpasswd=ls_lockpasswd+right('000'+string(asc(mid(ls_tmppwd,(li_i - 1)*4+1,1))+asc(mid(ls_tmppwd,(li_i - 1)*4+2,1))),3)
//three=three+four
ls_lockpasswd=ls_lockpasswd+right('000'+string(asc(mid(ls_tmppwd,(li_i - 1)*4+3,1))+asc(mid(ls_tmppwd,(li_i - 1)*4+4,1))),3)
//four=four
ls_lockpasswd=ls_lockpasswd+right('000'+string(asc(mid(ls_tmppwd,(li_i - 1)*4+4,1))),3)
li_i= li_i + 1
loop
end if
if ls_mod = '^' then
ls_lockpasswd=ls_mod+right('000'+string(asc(mid(ls_tmppwd,1,1))),3)+ls_lockpasswd
else
ls_lockpasswd=right('000'+string(asc(mid(ls_tmppwd,1,1))),3)+ls_lockpasswd
end if
ls_returnpasswd = ls_lockpasswdelseif lower(vs_runway) = 'unlock' then //给隐形密码解密变为可见密码
if mid(vs_passwd,1,1) = '^' then
li_pwdlen = len(vs_passwd) - 4
ls_mod = '^'
else
li_pwdlen = len(vs_passwd) - 3
ls_mod = '!'
end if
if mod(li_pwdlen,6) <> 0 or li_pwdlen < 9 or isnull(vs_passwd) then
messagebox('提示','传入错误的隐形密码!')
return '-1'
end if if mid(vs_passwd,1,1) = '^' then
li_pwdlen = mod(asc(char(integer(mid(vs_passwd,2,3)))),2)
vs_passwd=mid(vs_passwd,5)
else
li_pwdlen = mod(asc(char(integer(mid(vs_passwd,1,3)))),2)
vs_passwd=mid(vs_passwd,4)
end if if li_pwdlen = 0 then
li_pwdlen = len(vs_passwd)
li_partpwdlen = li_pwdlen / 12
ls_tmppwd=''
li_i = 1
do while li_i <= li_partpwdlen
/*
one=one+two
two=two
three=three
four=three+four
*/
//one=one - two
ls_tmppwd=ls_tmppwd+char(integer(mid(vs_passwd,(li_i - 1)*12+1,3)) - integer(mid(vs_passwd,(li_i - 1)*12+4,3)))
//tow=two
ls_tmppwd=ls_tmppwd+char(integer(mid(vs_passwd,(li_i - 1)*12+4,3)))
//three=three
ls_tmppwd=ls_tmppwd+char(integer(mid(vs_passwd,(li_i - 1)*12+7,3)))
//four=four - three
ls_tmppwd=ls_tmppwd+char(integer(mid(vs_passwd,(li_i - 1)*12+10,3)) - integer(mid(vs_passwd,(li_i - 1)*12+7,3)))
li_i= li_i + 1
loop
else
li_pwdlen = len(vs_passwd)
li_partpwdlen = li_pwdlen / 12
ls_tmppwd=''
li_i = 1 /* one=one
two=one+two
three=three+four
four=four
*/
do while li_i <= li_partpwdlen
//one=one
ls_tmppwd=ls_tmppwd+char(integer(mid(vs_passwd,(li_i - 1)*12+1,3)))
//two=two - one
ls_tmppwd=ls_tmppwd+char(integer(mid(vs_passwd,(li_i - 1)*12+4,3)) - integer(mid(vs_passwd,(li_i - 1)*12+1,3)))
//three=three - four
ls_tmppwd=ls_tmppwd+char(integer(mid(vs_passwd,(li_i - 1)*12+7,3)) - integer(mid(vs_passwd,(li_i - 1)*12+10,3)))
//four=four
ls_tmppwd=ls_tmppwd+char(integer(mid(vs_passwd,(li_i - 1)*12+10,3)))
li_i= li_i + 1
loop
end if
//ls_tmppwd='6F4D5E2B3C1A'
li_i = 1
li_partpwdlen = li_partpwdlen * 2
ls_unlockpasswd=space(li_partpwdlen)
do while li_i <= li_partpwdlen
li_j = asc(mid(ls_tmppwd,(li_i - 1)*2 + 1,1)) - 64
ls_unlockpasswd = Replace(ls_unlockpasswd, li_j, 1, mid(ls_tmppwd,li_i*2,1))
li_i = li_i +1
loop
//ls_unlockpasswd='ABCDEF'
if ls_mod = '^' then
ls_returnpasswd = mid(ls_unlockpasswd,2)
else
ls_returnpasswd = ls_unlockpasswd
end if
end if
return ls_returnpasswd
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货