博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
信息安全--密钥短语密码
阅读量:6983 次
发布时间:2019-06-27

本文共 1942 字,大约阅读时间需要 6 分钟。

密钥短语密码

说明:

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

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

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

  

转载于:https://www.cnblogs.com/zishu/p/8650124.html

你可能感兴趣的文章
【分布式】1、CAP原则(CAP定理)、BASE理论
查看>>
java String长度与varchar长度匹配理解(字符和字节长度理解)
查看>>
数据採集器服务——Socket(今天才发现AES加解密代码跟贴的时候不一样,貌似乱码,不知什么情况)...
查看>>
复习笔记——操作系统
查看>>
word2vec中文类似词计算和聚类的使用说明及c语言源代码
查看>>
C++项目參考解答:求Fibonacci数列
查看>>
Mac 下搭建环境 homebrew/git/node.js/npm/vsCode...
查看>>
Python(十)之GUI编程
查看>>
基于Docker的redis集群搭建
查看>>
文件分割机
查看>>
[Winform]WebKit.Net使用
查看>>
17 HTTP编程入门
查看>>
Eclipse安装Jetty插件(Web容器)
查看>>
js使用defineProperty的一些坑
查看>>
python 识别验证码
查看>>
【转】android IDE——通过DDMS查看app运行时所占内存情况
查看>>
运维常说的 5个9、4个9、3个9 的可靠性,到底是什么???
查看>>
[SQL] 函数整理(T-SQL 版)
查看>>
Java+大数据开发——HDFS详解
查看>>
.NET Core 使用RabbitMQ
查看>>