首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 四位數加密演算法:加 5 取模與位置交換

     編輯:Java 相關知識

簡易資料加密示範

加密規則:

  1. 輸入四位正整數。
  2. 每位數字加 5,取個位數(即 (digit+5)%10)。
  3. 交換位置:第 1 位↔第 4 位,第 2 位↔第 3 位。

完整程式碼


import java.util.Scanner;

public class FourDigitEncrypt {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num;
        do {
            System.out.print("請輸入四位正整數:");
            num = sc.nextInt();
        } while (num < 1000 || num > 9999);

        int[] digits = new int[4];
        digits[0] = num / 1000;
        digits[1] = (num / 100) % 10;
        digits[2] = (num / 10) % 10;
        digits[3] = num % 10;

        // 步驟 1:加 5 取模
        for (int i = 0; i < 4; i++) {
            digits[i] = (digits[i] + 5) % 10;
        }

        // 步驟 2:對稱交換
        swap(digits, 0, 3);
        swap(digits, 1, 2);

        System.out.print("加密結果:");
        for (int d : digits) System.out.print(d);
        System.out.println();
    }

    static void swap(int[] arr, int i, int j) {
        int tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp;
    }
}

解密邏輯(逆向操作)

  1. 先對稱交換(同加密,交換是自逆的)。
  2. 每位數字減 5(或加 5 再取模,因 (x-5+10)%10 == (x+5)%10)。

public static int decrypt(int encrypted) {
    int[] d = new int[4];
    d[0] = encrypted / 1000;
    d[1] = (encrypted / 100) % 10;
    d[2] = (encrypted / 10) % 10;
    d[3] = encrypted % 10;

    swap(d, 0, 3);
    swap(d, 1, 2);
    for (int i = 0; i < 4; i++) d[i] = (d[i] + 5) % 10; // 同加密操作

    return d[0]*1000 + d[1]*100 + d[2]*10 + d[3];
}

安全性分析

  • 鍵空間極小(僅 10^4 種可能),屬安全性極低的混淆而非加密。
  • 適合教學示範對稱加密基本概念:置換+替換。
  • 實務應用請使用 AES、RSA 等標準演算法。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved