密鑰短語密碼
說明:
最近的課程要求自己實現幾種加密算法,雖然簡單,但也養成習慣,做個記錄。
下面是密鑰短語密碼的實現步驟:
1. 選擇密鑰並刪除重復字母.
2. 在明文的字母表下方從左往右寫下處理的后的密鑰,然后再寫剩余的字母即得密文字母表.
如密鑰短語密碼為: hello -> helo 明文: abcdefghijklmnopqrstuvwxyz 密文: heloabcdfgijkmnpqrstuvwxyz
3.java 代碼實現:
package com.jiangbiao.firsthomework; import java.util.ArrayList; import java.util.List; import java.util.Scanner; /** * 密鑰短語密碼 */ public class KeyWordCipher { public static final String word = "abcdefghijklmnopqrstuvwxyz"; public static void main(String[] args) { String express; Scanner input = new Scanner(System.in); System.out.println("請輸入密鑰:"); String miyao = input.nextLine(); System.out.println("請輸入明文:"); express = input.nextLine(); //轉換成小寫形式 String miyao2 = miyao.toLowerCase(); String express2 = express.toLowerCase(); //密文 String ciphertext = encryptionOperation(miyao2, express2); System.out.println("密文如下:"); System.out.println(ciphertext); } /** * 加密操作 * @param express * @return */ public static String encryptionOperation(String miyao, String express){ char[] miyaos = miyao.toCharArray(); char[] expresss = express.toCharArray(); List<Character> miyaosL = new ArrayList<>(); //1.切分明文,並去除重復單詞 for (int i = 0; i < miyaos.length; i++) { if (i > 0){ if (miyaosL.contains(miyaos[i])) { continue; } } miyaosL.add(miyaos[i]); } System.out.println("切分后的單詞:\n" + miyaosL.toString()); //2.拼湊密文 List<Character> wordsList = miyaosL; for (int k = 0; k < expresss.length; k++){ if (!wordsList.contains(expresss[k])) { wordsList.add(expresss[k]); } } String ciphertext = wordsList.toString().substring(1, wordsList.toString().length()-1); return ciphertext.replaceAll(", ", ""); } }
/** * 測試用例: * * 請輸入密鑰: * hello * 請輸入明文: * abcdefghijklmnopqrstuvwxyz * 切分后的單詞: * [h, e, l, o] * 密文如下: * heloabcdfgijkmnpqrstuvwxyz */
