该代码块有待优化提升,后续将在文末进行展示,望大佬有更好意见欢迎评论或私信(ง •_•)ง
需求:
Admin_Log
– 某系统的数字密码(大于0).比如1983,采用加密方式进行传输。
规则如下:
– 每位数加上5
– 再对10求余
– 最后将所有数字反转
– 得到新的一串数字
加密 – 1 – 将每一位数字都添加到数组中
点击查看完整代码图片:加密 – 1 – 将每一位数字都添加到数组图片展示
public class encryption2 { public static void main(String[] args) { /* 需求: - 把整数上的每一位都添加到数组当中 - 反向推导 */ // 1. 计算出数组的长度 int number = 1983; // 定义一个临时变量记录number的值,为了第三步的时候能够再次使用 int temp = number; // 定义一个变量进行统计 int count = 0; while (number != 0) { // 每一次循环就去掉右边的一个数字 number = number / 10; count++; } // System.out.println(count); // 2. 定义数组 // 动态初始化 [ 不知道长度是多少 ] int[] arr = new int[count]; // 3. 把整数上的每一位都添加到数组当中 int index = arr.length - 1; while (temp != 0) { // 12345 // 获取temp里的每一位数字 int ge = temp % 10; // 再去掉右边的数字 temp = temp / 10; // 把当前获取到的个位添加到数组当中 arr[index] = ge; index--; } for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } } }
加密 – 2 – 对数组内数据进行加密
点击查看完整代码图片:加密 – 2 – 将每一位数字都添加到数组图片展示
public class encryption { public static void main(String[] args) { /* 需求: - 某系统的数字密码(大于0).比如1983,采用加密方式进行传输。 规则如下: - 每位数加上5 - 再对10求余 - 最后将所有数字反转 - 得到新的一串数字 */ // 1. 把整数里面的每一位数放到数组当中 int[] arr = {1, 9, 8, 3}; // 2. 加密 // 每一位数字加上5 for (int i = 0; i < arr.length; i++) { arr[i] = arr[i] + 5; } // 再对10取余 for (int i = 0; i < arr.length; i++) { arr[i] = arr[i] % 10; } // 将所有数字反转 for (int i = 0, j = arr.length - 1; i < j; i++, j--) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } // 8 3 4 6 --> 8346 // 3. 将数组里面的每一个数字进行拼接,变成加密之后的结果 // 定义最终变量 int number = 0; for (int i = 0; i < arr.length; i++) { // 将number进行 *10操作是为了简化操作 // 第一次:0*10+8=8 // 第二次:8*10+3=80+3=83 // 第三次:83*10+4=830+4=834 // 第四次:834*10+6=8340+3=8346 number = number * 10 + arr[i]; } System.out.println(number); } }
解密
点击查看完整代码图片:解密图片展示
public class deciphering { public static void main(String[] args) { /* 需求: - 某系统的数字密码(大于0).比如1983,次啊用加密方式进行传输。 规则如下: - 每位数加上5 - 再对10求余 - 最后将所有数字反转 - 得到新的一串数字 按照以上规则进行解密: - 比如1983加密之后变成8346,解密之后变成1983 */ // 1. 定义数组记录解密之后的结果 int[] arr = {8, 3, 4, 6}; // 2. 反转 for (int i = 0, j = arr.length - 1; i < j; i++, j--) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } // 3. 由于加密是通过对10取余的方式进行获取的 // 所以在解密的时候就需要判断,0~4之间+10,5~9数字不变 for (int i = 0; i < arr.length; i++) { if (arr[i] >= 0 && arr[i] <= 4) { arr[i] = arr[i] + 10; } } // 4. 每一位减去5 for (int i = 0; i < arr.length; i++) { arr[i] = arr[i] - 5; } // 5. 获取数组里面的每一位数字拼接成最终的结果 int number = 0; for (int i = 0; i < arr.length; i++) { number = number *10+arr[i]; } System.out.println(number); } }