信息安全--密鑰短語密碼


密鑰短語密碼

說明:

最近的課程要求自己實現幾種加密算法,雖然簡單,但也養成習慣,做個記錄。

下面是密鑰短語密碼的實現步驟:

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
*/

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM