1 /**
2 * 需求:系统数字加密,1983 ,采用加密方/解密式传输
3 * 先得到每一位数字,然后 +5 在对 10 求余,最后将所有数字反转,得到一串新数字
4 */
5 public class Demo {
6 public static void main(String[] args) {
7
8 // 定义一串需要加密的数组
9 int[] arr = new int[]{1, 9, 8, 3};
10 enCode(arr);
11
12 // 解密
13 int[] arr2 = new int[]{8, 3, 4, 6};
14 deCode(arr2);
15 }
16
17 public static void enCode(int[] arr){
18 // 按照每个数进行加密规则
19 for (int i = 0; i < arr.length; i++) {
20 arr[i] = (arr[i] + 5) % 10;
21 }
22
23 // 数组反转
24 for (int i = 0, j = arr.length - 1; i < j; i++ ,j--) {
25 int tmp = arr[j];
26 arr[j] = arr[i];
27 arr[i] = tmp;
28 }
29
30 // 遍历输出
31 for (int i = 0; i < arr.length; i++) {
32 System.out.print(i == arr.length - 1 ? arr[i] : arr[i] + ", ");
33 }
34
35 System.out.println("\n");
36 }
37
38 // 解密
39 public static void deCode(int[] arr){
40
41 // 数组反转
42 for (int i = 0, j = arr.length - 1; i < j; i++ ,j--) {
43 int tmp = arr[j];
44 arr[j] = arr[i];
45 arr[i] = tmp;
46 }
47
48 // 按照每个数进行规则解密
49 for (int i = 0; i < arr.length; i++) {
50 arr[i] = ((arr[i] - 5) + 10) % 10 ;
51 }
52
53 // 遍历输出
54 for (int i = 0; i < arr.length; i++) {
55 System.out.print(i == arr.length -1 ? arr[i] : arr[i] + ", ");
56 }
57 }
58 }