Loading

信息安全--密钥短语密码

密钥短语密码

说明:

最近的课程要求自己实现几种加密算法,虽然简单,但也养成习惯,做个记录。

下面是密钥短语密码的实现步骤:

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

  

posted @ 2018-03-26 12:20  sinatJ  阅读(3746)  评论(0编辑  收藏  举报