Java 在给定余数时查找红利
我已经写了一个程序,在其中我加密用户输入。输入只有四位数长。加密公式如下: 要求用户输入4位数字 一个接一个地迭代,并在其中添加7。 用10除以每个数的余数。 用3交换1,用4交换2。 假设我输入了1234。在每个数字中加上数字7后,数字看起来像891011。其余的数字是8901。现在我交换这些,最后的数字看起来像0189。这都是关于加密程序的Java 在给定余数时查找红利,java,encryption,Java,Encryption,我已经写了一个程序,在其中我加密用户输入。输入只有四位数长。加密公式如下: 要求用户输入4位数字 一个接一个地迭代,并在其中添加7。 用10除以每个数的余数。 用3交换1,用4交换2。 假设我输入了1234。在每个数字中加上数字7后,数字看起来像891011。其余的数字是8901。现在我交换这些,最后的数字看起来像0189。这都是关于加密程序的 USER INPUT : 0189 现在,我必须编写另一个单独的程序来解密用户的输入,并找出实际的数字。我面临的问题是,我必须首先找到股息。但给定的数
USER INPUT : 0189
现在,我必须编写另一个单独的程序来解密用户的输入,并找出实际的数字。我面临的问题是,我必须首先找到股息。但给定的数据是除数和余数,在这里是10和0。如果我错了,请指导我。提前感谢。翻译表没有显示任何副本,因此这里没有问题:
n +7 %10
--------------
0 => 7 => 7
1 => 8 => 8
2 => 9 => 9
3 => 10 => 0
4 => 11 => 1
5 => 12 => 2
6 => 13 => 3
7 => 14 => 4
8 => 15 => 5
9 => 16 => 6
因此,要解密:
解开数字
每个数字减去7,如果结果为负数,则加10或使用翻译表
翻译表没有显示任何重复项,因此这里没有问题:
n +7 %10
--------------
0 => 7 => 7
1 => 8 => 8
2 => 9 => 9
3 => 10 => 0
4 => 11 => 1
5 => 12 => 2
6 => 13 => 3
7 => 14 => 4
8 => 15 => 5
9 => 16 => 6
因此,要解密:
解开数字
每个数字减去7,如果结果为负数,则加10或使用翻译表
让我们做一些计算: 每个原始数字的范围从0到9 添加7后,每个值的范围为7到16 除以10后,7到9之间的任何数字都是相同的;从10到16的任何x数范围都将从0到6。 要查找原始数字,请对最后的每个数字执行以下操作 如果x 6原始=x-7
让我们做一些计算: 每个原始数字的范围从0到9 添加7后,每个值的范围为7到16 除以10后,7到9之间的任何数字都是相同的;从10到16的任何x数范围都将从0到6。 要查找原始数字,请对最后的每个数字执行以下操作 如果x 6原始=x-7
我用一个简单的JAVA程序进行了尝试,没有任何问题 如果您想试一试,下面是代码片段:
public static void main (String[] args)
{
Scanner in = new Scanner(System.in);
/* Start Encrypting */
String encrypted = encrypt(in.nextInt(), 4);
System.out.println("Encrypted: " + encrypted);
/* Start Decrypting */
String decrypted = decrypt(encrypted, 4);
System.out.println("Decrypted: " + decrypted);
}
/* Encryption Logic */
public static String encrypt(int x, int size) {
int[] output = new int[size];
/* Add 7, Mod 10 Logic */
for(int i = size - 1; x > 0; i--) {
output[i] = ((x % 10) + 7) % 10;
x /= 10;
}
/* Swap Logic */
for(int i = 0; i < size/2; i++) {
int temp = output[i];
output[i] = output[i+2];
output[i+2] = temp;
}
/* Return Result */
return Arrays.toString(output).replace(", ","").substring(1,size+1);
}
/* Decryption Logic */
public static String decrypt(String x, int size) {
/* Get Chars */
char[] input = x.toCharArray();
int[] output = new int[size];
/* Sub 7, Mod 10 Logic */
for(int i = 0; i < input.length; i++) {
output[i] = (((int)(input[i]) - 48) + 3) % 10;
}
/* Swap Logic */
for(int i = 0; i < size/2; i++) {
int temp = output[i];
output[i] = output[i+2];
output[i+2] = temp;
}
/* Return Result */
return Arrays.toString(output).replace(", ","").substring(1,size+1);
}
输出:
Encrypted: 0189
Decrypted: 1234
我用一个简单的JAVA程序进行了尝试,没有任何问题 如果您想试一试,下面是代码片段:
public static void main (String[] args)
{
Scanner in = new Scanner(System.in);
/* Start Encrypting */
String encrypted = encrypt(in.nextInt(), 4);
System.out.println("Encrypted: " + encrypted);
/* Start Decrypting */
String decrypted = decrypt(encrypted, 4);
System.out.println("Decrypted: " + decrypted);
}
/* Encryption Logic */
public static String encrypt(int x, int size) {
int[] output = new int[size];
/* Add 7, Mod 10 Logic */
for(int i = size - 1; x > 0; i--) {
output[i] = ((x % 10) + 7) % 10;
x /= 10;
}
/* Swap Logic */
for(int i = 0; i < size/2; i++) {
int temp = output[i];
output[i] = output[i+2];
output[i+2] = temp;
}
/* Return Result */
return Arrays.toString(output).replace(", ","").substring(1,size+1);
}
/* Decryption Logic */
public static String decrypt(String x, int size) {
/* Get Chars */
char[] input = x.toCharArray();
int[] output = new int[size];
/* Sub 7, Mod 10 Logic */
for(int i = 0; i < input.length; i++) {
output[i] = (((int)(input[i]) - 48) + 3) % 10;
}
/* Swap Logic */
for(int i = 0; i < size/2; i++) {
int temp = output[i];
output[i] = output[i+2];
output[i+2] = temp;
}
/* Return Result */
return Arrays.toString(output).replace(", ","").substring(1,size+1);
}
输出:
Encrypted: 0189
Decrypted: 1234