自定你的訊息:仿射密碼 Java257


在這個數位時代,保護我們的秘密訊息至關重要。其中一種古老而有效的加密技術是仿射密碼,它利用數學轉換將訊息隱藏起來。

仿射密碼是一種替換密碼,將每個明文字元替換為密文字元,但替換規則是根據線性方程式定義的。這個方程式由兩個參數決定:加法常數 a 和乘法常數 b,表示為 E(x) = (ax + b) mod m。其中,m 是密碼表的字元數,通常是 26(適用於英文字母)。

例如,如果我們選擇 a = 3、b = 5 和 m = 26,則密碼表如下所示:| 明文 | A | B | C | D | E | F | G | H | I | J | K | L | M |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 密文 | D | E | F | G | H | I | J | K | L | M | N | O | P |

要使用這個密碼加密訊息,我們將每個明文字母替換為對應的密文字母。例如,加密訊息 "HELLO" 將變成 "LIHQQ"。

解密過程與加密相似,但使用逆方程式 D(x) = (a^-1(x - b)) mod m,其中 a^-1 是 a 的模反數。對於上述範例,a^-1 = 9,因此解密方程式為 D(x) = (9(x - 5)) mod 26。

現在,讓我們使用 Java 程式碼實現仿射密碼:```java
import ;
public class AffineCipher {
public static void main(String[] args) {
Scanner input = new Scanner();
// 獲取使用者輸入的參數
("輸入加法常數 a (1-25): ");
int a = ();
("輸入乘法常數 b (0-25): ");
int b = ();
// 檢查參數是否有效
if (a < 1 || a > 25 || b < 0 || b > 25) {
("無效的參數。請輸入 1-25 (a) 和 0-25 (b)。");
return;
}
// 獲取使用者輸入的訊息
("輸入要加密的訊息: ");
String message = ();
message = ();
// 加密訊息
String encryptedMessage = "";
for (char c : ()) {
int index = c - 'A';
int encryptedIndex = (a * index + b) % 26;
char encryptedChar = (char) ('A' + encryptedIndex);
encryptedMessage += encryptedChar;
}
// 印出加密後的訊息
("加密後的訊息: " + encryptedMessage);
// 解密訊息
String decryptedMessage = "";
for (char c : ()) {
int index = c - 'A';
int decryptedIndex = (a^-1 * (index - b)) % 26;
char decryptedChar = (char) ('A' + decryptedIndex);
decryptedMessage += decryptedChar;
}
// 印出解密後的訊息
("解密後的訊息: " + decryptedMessage);
}
}
```

使用這個程式,你可以使用自訂的參數加密和解密訊息,確保訊息的安全性和隱私性。

2024-12-08


上一篇:Java 实现 2048 游戏

下一篇:Java 中 HTML 代码转换为 PDF 的全面指南