信息安全--密钥短语密码
密钥短语密码
说明:
最近的课程要求自己实现几种加密算法,虽然简单,但也养成习惯,做个记录。
下面是密钥短语密码的实现步骤:
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 */
本文来自博客园,作者:sinatJ,转载请注明原文链接:https://www.cnblogs.com/zishu/p/8650124.html