code的格式是:"M1234-12345-12345-12345-12345-12345-12345";
public static String calc(String code)
{
if(code.length() != 41 || code.indexOf("-") != 5)
return "";
StringBuffer stringbuffer = new StringBuffer();
for(int i = 0; i < s.length(); i++)
{
char c = s.charAt(i);
if(c != '-')
stringbuffer.append(c);
}
s = stringbuffer.toString();
stringbuffer.setLength(0);
stringbuffer.append(s.substring(0, 2));
int j = 0;
j += s.charAt(0);
j += s.charAt(1);
int k = Integer.parseInt(s.substring(s.length() - 3));
for(int l = 2; l < s.length() - 3; l++)
{
char c1 = s.charAt(l);
int i1 = Integer.parseInt("" + c1);
int j1 = l;
j1 = (j1 * j1 - 3) + k;
for(i1 -= j1; i1 < 0; i1 += 10);
j += i1 + 48;
stringbuffer.append("" + i1);
} String s1 = "" + j * 7;
if(s1.substring(s1.length() - 3).equals(s.substring(s.length() - 3)))
return stringbuffer.toString();
else
return "";
}
public static String calc(String code)
{
if(code.length() != 41 || code.indexOf("-") != 5)
return "";
StringBuffer stringbuffer = new StringBuffer();
for(int i = 0; i < s.length(); i++)
{
char c = s.charAt(i);
if(c != '-')
stringbuffer.append(c);
}
s = stringbuffer.toString();
stringbuffer.setLength(0);
stringbuffer.append(s.substring(0, 2));
int j = 0;
j += s.charAt(0);
j += s.charAt(1);
int k = Integer.parseInt(s.substring(s.length() - 3));
for(int l = 2; l < s.length() - 3; l++)
{
char c1 = s.charAt(l);
int i1 = Integer.parseInt("" + c1);
int j1 = l;
j1 = (j1 * j1 - 3) + k;
for(i1 -= j1; i1 < 0; i1 += 10);
j += i1 + 48;
stringbuffer.append("" + i1);
} String s1 = "" + j * 7;
if(s1.substring(s1.length() - 3).equals(s.substring(s.length() - 3)))
return stringbuffer.toString();
else
return "";
}
{
if(code.length()!= 41¦¦code.indexOf("-")!=5)
return "";
StringBuffer stringbuffer = new StringBuffer();
for(int i = 0; i < s.length(); i++)
{
char c = s.charAt(i);
if(c != '-')
stringbuffer.append(c);
}
s = stringbuffer.toString();
stringbuffer.setLength(0);
stringbuffer.append(s.substring(0, 2));
int j = 0;
j += s.charAt(0);
j += s.charAt(1);
int k = Integer.parseInt(s.substring(s.length() - 3));
for(int l = 2; l < s.length() - 3; l++)
{
char c1 = s.charAt(l);
int i1 = Integer.parseInt("" + c1);
int j1 = l;
j1 = (j1 * j1 - 3) + k;
for(i1 -= j1; i1 < 0; i1 += 10);
j += i1 + 48;
stringbuffer.append("" + i1);
}
String s1 = "" + j * 7;
if(s1.substring(s1.length() - 3).equals(s.substring(s.length() - 3)))
return stringbuffer.toString();
else
return "";
}
if(s1.substring(s1.length() - 3).equals(s.substring(s.length() - 3)))
其中 s1的值和s的值至关重要,可不可逆取决于能不能s1的值是否可以推算出来。
因为
for(i1 -= j1; i1 < 0; i1 += 10);
j += i1 + 48;
相当于作了求模运算,已经有信息丢失。
丢失的那部分信息在存放在j中,并且加入了j1作为影响因素,请确定你的代码是正确的,并可运行,才好分析,不然会浪费时间。