
几天前我获得了ID验证算法,所以我想尝试

[Visual Basic]纯文本视图复制代码

'输入号 tsk=inputbox("号前17位") a=mid(tsk,1,1) int (a) aa=(2^17) mod 11 b=mid(tsk,2,1) int (b) bb=(2^16) mod 11 c=mid(tsk,3,1) int (c) cc=(2^15) mod 11 d=mid(tsk,4,1) int (d) dd=(2^14) mod 11 e=mid(tsk,5,1) int (e) ee=(2^13) mod 11 f=mid(tsk,6,1) int (f) ff=(2^12) mod 11 g=mid(tsk,7,1) int (g) gg=(2^11) mod 11 h=mid(tsk,8,1) int (h) hh=(2^10) mod 11 i=mid(tsk,9,1) int (i) ii=(2^9) mod 11 j=mid(tsk,10,1) int (j) jj=(2^8) mod 11 k=mid(tsk,11,1) int (k) kk=(2^7) mod 11 l=mid(tsk,12,1) int (l) ll=(2^6) mod 11 m=mid(tsk,13,1) int (m) mm=(2^5) mod 11 n=mid(tsk,14,1) int (n) nn=(2^4) mod 11 o=mid(tsk,15,1) int (o) oo=(2^3) mod 11 p=mid(tsk,16,1) int (p) pp=(2^2) mod 11 q=mid(tsk,17,1) int (q) qq=(2^1) mod 11 TT=aa*a+bb*b+cc*c+dd*d+ee*e+ff*f+gg*g+hh*h+ii*i+jj*j+kk*k+ll*l+mm*m+nn*n+oo*o+pp*p+qq*q dim ne int (ne) int (TT) ne=0 do ans=(TT+ne) mod 11 int (ans) if ans=1 then exit do else ne=ne+1 end if loop if ne=10 then msgbox "X" else msgbox ne end if

实际上,这里的代码可以简化,以前的加权平均值是一个固定值,我们甚至可以预先计算出来,只有一位,这比较简单.
此计算器还可以添加更,例如检测这是还是类似的东西,但这是基于本地平台的校验码计算器,全国各地地址代码和警察局号码的收集也会导致此问题. 该代码比原始代码长.
我vbs小白校验码计算器,如果您有任何更好的建议,请挺身而出,谢谢! ! !
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-172052-1.html
机
中美之外交
帅的没谁了
你觉得我是不是该更新下