回 帖 发 新 帖 刷新版面

主题:用异或指令bitxor()对字符串加密的例子

x=加密_解密_字符串('天下就没有不黑的乌鸦')
? x
y=加密_解密_字符串(x)
? y
return


proc 加密_解密_字符串
para p_内容0
priv i,j,k,l,m,n,p_字段,p_内容1,p_内容2,p_内容3,p_密钥0,p_密钥1,p_密钥2,p_密钥3,;
 p_密钥4,p_密钥5,p_密钥6,p_密钥7,p_密钥8,p_密钥9,tmp,tmp1,tmp2,tmp3,i_容错

do case
case .not.type('p_内容0')='C'
 return p_内容0
case empty(p_内容0)
 return p_内容0
endc

p_密钥0=127
p_密钥1=128
p_密钥2=129
p_密钥3=130
p_密钥4=131
p_密钥5=132
p_密钥6=133
p_密钥7=134
p_密钥8=135
p_密钥9=136

*  用异或指令bitxor()对字符串加密,第一次是加密,再执行就是解密。本程序使用10个密钥
*  方法:循环取出一个字符,转成 Asc 码,用 p_密钥? 进行异或运算之后再转成字符,
p_内容1=''
p_内容2=''
p_内容3=''
k=0
l=0
i_容错=0
do whil len(p_内容0)>0  && .and..not.empty(p_内容0)
 k=k+1
 tmp1=left(p_内容0,1)
 p_内容0=subs(p_内容0,2)
 tmp2=asc(tmp1)
 n=mod(k,10)
 n1=allt(str(n))
 tmp2=bitxor(tmp2,p_密钥&n1)
 p_内容2=p_内容2+chr(tmp2)
 if len(p_内容0)<=1
  i_容错=i_容错+1
  if i_容错>5
   exit
  endi
 endi
endd
p_内容0=p_内容2
return p_内容0

回复列表 (共1个回复)

沙发

对字符串加密有许多方法,用异或运算指令加密可能是原理最简单的方法之一。加密的方法简单,破译的难度就低。

我来回复

您尚未登录,请登录后再回复。点此登录或注册