许可证算法

This commit is contained in:
tangw 2025-09-20 00:57:19 +08:00
parent 385d4167f6
commit 54f40ff021

View File

@ -54,29 +54,31 @@ public class HaveRegUtils {
for (int i = 0; i < il_char.length; i++) { for (int i = 0; i < il_char.length; i++) {
il_parm[il_i] = (int) (il_parm[il_i] + (il_char[i] * il_parm[il_i - 2]) / Math.sqrt(Math.abs(il_parm[il_i - 1]))); il_parm[il_i] = (int) (il_parm[il_i] + (il_char[i] * il_parm[il_i - 2]) / Math.sqrt(Math.abs(il_parm[il_i - 1])));
} }
long[] serialnum={0,0,0,0,0}; int[] serialnum={0,0,0,0,0};
serialnum[1]=Math.abs(il_parm[il_i]); serialnum[1]=Math.abs((int)il_parm[il_i]);
il_i=4; il_i=4;
for (int i = 0; i < il_char.length; i++) { for (int i = 0; i < il_char.length; i++) {
il_parm[il_i] = (int) (il_parm[il_i] + (il_char[i] * il_parm[il_i - 1]) / Math.sqrt(Math.abs(il_parm[il_i - 2]))); il_parm[il_i] = (int) (il_parm[il_i] + (il_char[i] * il_parm[il_i - 1]) / Math.sqrt(Math.abs(il_parm[il_i - 2])));
} }
serialnum[2]=Math.abs(il_parm[il_i]); serialnum[2]=Math.abs((int)il_parm[il_i]);
il_i=5; il_i=5;
for (int i = 0; i < il_char.length; i++) { for (int i = 0; i < il_char.length; i++) {
il_parm[il_i] = (int) (il_parm[il_i] + il_char[i] * Math.sqrt(Math.abs(il_parm[il_i - 1] * il_parm[il_i - 2]))); il_parm[il_i] = (int) (il_parm[il_i] + il_char[i] * Math.sqrt(Math.abs((int) il_parm[il_i - 1] * (int) il_parm[il_i - 2])));
} }
serialnum[3]=Math.abs(il_parm[il_i]); serialnum[3]=Math.abs((int)il_parm[il_i]);
il_i=6; il_i=6;
for (int i = 0; i < il_char.length; i++) { for (int i = 0; i < il_char.length; i++) {
il_parm[il_i] = (int) (il_parm[il_i] + Math.log(Math.abs(il_char[i])) * Math.sqrt(Math.abs(il_parm[il_i - 1]) * LisUtil.logten(Math.abs(il_parm[il_i - 2])))); il_parm[il_i] = (int) (il_parm[il_i] + Math.log(Math.abs(il_char[i])) * Math.sqrt(Math.abs(il_parm[il_i - 1]) * LisUtil.logten(Math.abs(il_parm[il_i - 2]))));
} }
serialnum[4]=Math.abs(il_parm[il_i]); serialnum[4]=Math.abs((int)il_parm[il_i]);
double com_sum=serialnum[1]+serialnum[2]+serialnum[3]+serialnum[4]; long com_sum=serialnum[1]+serialnum[2]+serialnum[3]+serialnum[4];
double com_sub=Math.abs(serialnum[2] * serialnum[3] - serialnum[1] * serialnum[4] ); long com_sub=Math.abs((long)serialnum[2] * (long)serialnum[3] - (long)serialnum[1] * (long)serialnum[4] );
double num1=Math.sqrt(Math.abs( serialnum[1] - serialnum[4] ) * Math.abs( serialnum[2] + serialnum[3] )) * 3412.971; double num1=Math.sqrt(Math.abs( (long)serialnum[1] - (long)serialnum[4] ) * Math.abs( (long)serialnum[2] + (long)serialnum[3] )) * 3412.971;
double num2=Math.log( com_sum * com_sub ) * 9134.176; double num2=(Math.log(com_sum)+ Math.log(com_sub )) * 9134.176;
String sn1=RightA(String.format("%05d",(num1+ num2) * 2 - Math.sqrt(Math.abs(num1* num2)) ),5); double snn=(num1+ num2) * 2 - Math.sqrt(Math.abs(num1* num2));
String sn2=RightA(String.format("%05d", num2 + num1 ),5); String sn1=RightA("00000"+String.format("%.0f", snn),5);
String sn2=RightA("00000"+String.format("%.0f", num1+num2),5);
String sn=Mid(sn2,2,1) + Mid(sn1,1,1) + Mid(sn1,5,1) + Mid(sn1,4,1) + Mid(sn2,3,1) + Mid(sn1,2,1) + Mid(sn2,1,1) + Mid(sn2,5,1) + Mid(sn2,4,1) + Mid(sn1,3,1); String sn=Mid(sn2,2,1) + Mid(sn1,1,1) + Mid(sn1,5,1) + Mid(sn1,4,1) + Mid(sn2,3,1) + Mid(sn1,2,1) + Mid(sn2,1,1) + Mid(sn2,5,1) + Mid(sn2,4,1) + Mid(sn1,3,1);
return sn; return sn;
} }