NET和JAVA实现MOD37 36校验码计算

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

按照 MOD3736规则计算校验码:
.NET版本:
/// <summary>
/// 计算标识校验码
/// </summary>
/// <param name="ValueCode">标识码前段</param>
/// <returns></returns>
private static string GetCertificateSourceIdCode(string ValueCode) {
string Code = ValueCode.Replace("." string.Empty).ToUpper(); Dictionary<string int> dict = new Dictionary<string int>();
dict.Add("0" 0);
dict.Add("1" 1);
dict.Add("2" 2);
dict.Add("3" 3);
dict.Add("4" 4);
dict.Add("5" 5);
dict.Add("6" 6);
dict.Add("7" 7);
dict.Add("8" 8);
dict.Add("9" 9);
dict.Add("A" 10);
dict.Add("B" 11);
dict.Add("C" 12);
dict.Add("D" 13);
dict.Add("E" 14);
dict.Add("F" 15);
dict.Add("G" 16);
dict.Add("H" 17);
dict.Add("I" 18);
dict.Add("J" 19);
dict.Add("K" 20);
dict.Add("L" 21);
dict.Add("M" 22);
dict.Add("N" 23);
dict.Add("O" 24);
dict.Add("P" 25);
dict.Add("Q" 26);
dict.Add("R" 27);
dict.Add("S" 28);
dict.Add("T" 29);
dict.Add("U" 30);
dict.Add("V" 31);
dict.Add("W" 32);
dict.Add("X" 33);
dict.Add("Y" 34);
dict.Add("Z" 35);
int M = 36;
int pm1 = 0;
for (int i = 0; i < Code.Length; i++)
{
string key = Code[i].ToString();
int s = 0;
if (i == 0)
{
s = M + dict[key];
}
else
{
s = pm1 + dict[key];
}
int sm = s % M;
if (sm == 0)
sm = M;
pm1 = (sm * 2) % (M + 1);
}
int result = 0;
if (pm1 % M != 1)
{
result = (M + 1 - pm1) % M;
}
var MDict = dict.First(P => P.Value == result); return MDict.Key;
}
JAVA版本:
/**
* 校验位获取
*/
String getXy(String XXy){
String Xy=XXy.replace(".""");
int M = 36;
int c = M;
for (int i = 0; i < Xy.length(); i++) {
c = c + getXyzh(Xy.charAt(i));
c = c%M;
if(c == 0){
c = M;
}
c = c * 2;
c = c % (M + 1);
}
int result = 0;
if(c%M != 1){
result = (M + 1 - c) % (M);
}
return getXyint(result);
}
int getXyzh(char c){
List a=new ArrayList();
a.add('0');a.add('1');a.add('2');a.add('3');a.add('4');
a.add('5');a.add('6');a.add('7');a.add('8');a.add('9');
a.add('A');a.add('B');a.add('C');a.add('D');a.add('E');
a.add('F');a.add('G');a.add('H');a.add('I');a.add('J'); a.add('K');a.add('L');a.add('M');a.add('N');a.add('O');
a.add('P');a.add('Q');a.add('R');a.add('S');a.add('T');
a.add('U');a.add('V');a.add('W');a.add('X');a.add('Y');
a.add('Z');
for(int i=0;i<a.size();i++){
if((c+"").equals(a.get(i)+"")){
return i;
}
}
return 0;
}
String getXyint(int i)
{
List a=new ArrayList();
a.add(0);a.add(1);a.add(2);a.add(3);a.add(4);
a.add(5);a.add(6);a.add(7);a.add(8);a.add(9);
a.add('A');a.add('B');a.add('C');a.add('D');a.add('E');
a.add('F');a.add('G');a.add('H');a.add('I');a.add('J'); a.add('K');a.add('L');a.add('M');a.add('N');a.add('O');
a.add('P');a.add('Q');a.add('R');a.add('S');a.add('T');
a.add('U');a.add('V');a.add('W');a.add('X');a.add('Y');
a.add('Z');
return a.get(i)+"";
}。

相关文档
最新文档