import java.util.Arrays; import java.util.Scanner;public class Test { public static void main(String[] args) { Scanner scan = null; int numToEncode = 0; String result = null;
return num; } private static String encodeNumber(int s) { int[] j = new int[4]; String num = "";
j[0] = (s % 100 / 10 + 7) % 10; j[1] = (s % 10 + 7) % 10; j[2] = (s / 1000 + 7) % 10; j[3] = (s % 1000 / 100 + 7) % 10;
for (int i : j) num += i;
return num; }}
import java.util.Arrays; import java.util.Scanner;public class Test { public static void main(String[] args) { Scanner scan = null; int numToEncode = 0; String result = null;
StringBuffer sb=new StringBuffer(str);
sb.reverse();//反转字符串
import java.util.Arrays;
import java.util.Scanner;public class Test {
public static void main(String[] args) { Scanner scan = null;
int numToEncode = 0;
String result = null;
System.out.println("请输入一个四位整数");
try {
scan = new Scanner(System.in);
numToEncode = scan.nextInt();
System.out.println("您输入的四位整数是: " + numToEncode);
} catch (NumberFormatException e) {
e.printStackTrace();
} finally {
scan.close();
}
result = encodeNumber(numToEncode);
System.out.println(numToEncode + "加密后为:" + result);
System.out.println(result + "解密后为:" + descodeNumber(result)); } private static String descodeNumber(String result) {
int[] j = new int[4];
String num = "";
for (int i = 0; i < 4; i++)
j[(i + 2) % 4] = Integer.parseInt("" + result.charAt(i));
j[0] = (j[0] + 3) % 10;
j[1] = (j[1] + 3) % 10;
j[2] = (j[2] + 3) % 10;
j[3] = (j[3] + 3) % 10;
for (int t : j)
num += t;
return num;
} private static String encodeNumber(int s) {
int[] j = new int[4];
String num = "";
j[0] = (s % 100 / 10 + 7) % 10;
j[1] = (s % 10 + 7) % 10;
j[2] = (s / 1000 + 7) % 10;
j[3] = (s % 1000 / 100 + 7) % 10;
for (int i : j)
num += i;
return num;
}}
import java.util.Arrays;
import java.util.Scanner;public class Test {
public static void main(String[] args) { Scanner scan = null;
int numToEncode = 0;
String result = null;
System.out.println("请输入一个四位整数");
try {
scan = new Scanner(System.in);
numToEncode = scan.nextInt();
System.out.println("您输入的四位整数是: " + numToEncode);
} catch (NumberFormatException e) {
e.printStackTrace();
} finally {
scan.close();
}
result = encodeNumber(numToEncode);
System.out.println(numToEncode + "加密后为:" + result);
System.out.println(result + "解密后为:" + descodeNumber(result)); } private static String descodeNumber(String result) {
int[] j = new int[4];
String num = "";
for (int i = 0; i < 4; i++)
j[(i + 2) % 4] = Integer.parseInt("" + result.charAt(i));
j[0] = (j[0] + 3) % 10;
j[1] = (j[1] + 3) % 10;
j[2] = (j[2] + 3) % 10;
j[3] = (j[3] + 3) % 10;
for (int t : j)
num += t;
return num;
} private static String encodeNumber(int s) {
int[] j = new int[4];
String num = "";
j[0] = (s % 100 / 10 + 7) % 10;
j[1] = (s % 10 + 7) % 10;
j[2] = (s / 1000 + 7) % 10;
j[3] = (s % 1000 / 100 + 7) % 10;
for (int i : j)
num += i;
return num;
}}
public class code
{
public static void main(String[] args)
{
int[] a=new int[4];
int[] b=new int[4];
Random ran=new Random();
a[0]=ran.nextInt(9);
a[1]=ran.nextInt(9);
a[2]=ran.nextInt(9);
a[3]=ran.nextInt(9);
for(int index=4;index>0;index--)
{
b[index-1]=(a[index-1]>=3)?1:0;
}
System.out.println(a[0]+""+a[1]+""+a[2]+""+a[3]);
a=exe(a,b);
for(int index=0;index<4;index++)
System.out.println(a[index]);
a=rexe(a,b);
for(int index=0;index<4;index++)
System.out.println(a[index]);
}
public static int[] exe(int[] a,int[] b)
{
a[0]=(a[0]+7)%10;
a[1]=(a[1]+7)%10;
a[2]=(a[2]+7)%10;
a[3]=(a[3]+7)%10;
swap(a);
swap(b);
return a;
}
public static int[] rexe(int[] a,int[] b)
{
for(int index=0;index<4;index++)
a[index]+=b[index]*10-7;
swap(a);
return a;
}
public static void swap(int[] a)
{
a[0]+=a[2];
a[2]=a[0]-a[2];
a[0]=a[0]-a[2];
a[1]+=a[3];
a[3]=a[1]-a[3];
a[1]=a[1]-a[3];
}
写的很差劲...大家提意见
public static void main(String[] args)
{
int size=4;
int[] a=new int[size];
int[] b=new int[size];
int[] swaporder=new int[size];
int modnumber=10;
int plusnumber=7;
Random ran=new Random();
for(int index=0;index<size;index++)
{
a[index]=ran.nextInt(modnumber);
System.out.print(a[index]);
}
System.out.println();
a=exe(a,b,modnumber,plusnumber);
for(int index=0;index<4;index++)
System.out.print(a[index]);
System.out.println();
a=rexe(a,b,modnumber,plusnumber);
for(int index=0;index<4;index++)
System.out.print(a[index]);
System.out.println();
}
public static int[] exe(int[] a,int[] b,int modnumber,int plusnumber)
{
for(int index=a.length;index>0;index--)
{
b[index-1]=(a[index-1]+plusnumber)/modnumber;
}
a[0]=(a[0]+plusnumber)%modnumber;
a[1]=(a[1]+plusnumber)%modnumber;
a[2]=(a[2]+plusnumber)%modnumber;
a[3]=(a[3]+plusnumber)%modnumber;
swap(a);
swap(b);
return a;
}
public static int[] rexe(int[] a,int[] b,int modnumber,int plusnumber)
{
for(int index=0;index<a.length;index++)
a[index]+=b[index]*modnumber-plusnumber;
swap(a);
return a;
}
public static void swap(int[] a)
{
a[0]+=a[2];
a[2]=a[0]-a[2];
a[0]=a[0]-a[2];
a[1]+=a[3];
a[3]=a[1]-a[3];
a[1]=a[1]-a[3];
}不知道怎么把交换顺序一般化
将就吧...