凯撒加密的最简单的理解与实现(Java版)

简介: 凯撒加密的最简单的理解与实现(Java版)

凯撒加密

前言

这是我的第一篇博客希望以后多多关注。

这篇文章起源于我在人工智能导论上的一次摸鱼◔ ‸◔,当时老师一节课都在脱离课本介绍,讲什么网络安全之类的问题,后面还举例子了一些加密方法巴拉巴拉,然后就开始介绍起来了凯撒加密,让大家找规律,我觉得还蛮有意思,而且比较简单,这个东西,然后在可以手动完成加密的基础上,想要体现一下俺2年算法水平,然后就尝试的实现了一下(。◕‿◕。)。

这个是当时的题目的PPT,老师让我猜一下如果密钥是DOCUMENT的话,这个密文是啥(揉眼睛 ( ‘-ωก̀ )。

第一次看这个PPT的时候,让猜凯撒加密的原理其实,一看有点难的亚子(•ิ_•ิ),但就在一瞬间突然明白辽,还是很简单的(..•˘_˘•..)。

我来介绍一下原理吧๑乛◡乛๑:

首先第一步是确定密钥的字母顺序,按照字母表来排序,所以A上面是1,然后以此类推R上面就是6了。

然后就是把原文从左往右,从上到下,在密钥下面写下去,然后就会得到这个ppt左部分这个不完整的矩阵了。再按照密钥的字母顺序从上到下来读取,就可以获得密文了,是不是很简单呀,这个手动算凯撒加密,于是我就想要使用程序做出来,由于最近再学java,于是我就要来展示一下我的java水平了。于是一个小时过后,我就写出来了我的代码(没错我写了一个小时,一部分是Java的API还不是很熟,另一个方面是,这个算法确实好几个恶心的地方QWQ)。

具体代码:

import java.util.*;
public class Main
{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        System.out.println("请输入秘钥:");
        ArrayList<Character> key_arraylist = new ArrayList<>();
        String key = in.nextLine();
// <1.1>
        int len_key = key.length();
        // 把密钥中的字母提取出来,然后放入列表中进行排序
        for (int i = 0; i < len_key; ++ i)
        {
            key_arraylist.add(key.charAt(i));
        }
        key_arraylist.sort(new Comparator<Character>(){ 
        // 对密钥字母排序
            @Override
            public int compare(Character o1, Character o2){
                int num = 0;
                if (o1 > o2) num = 1;
                else if (o1 == o2) num = 0;
                else num = -1;
                return num;
            }
        });
        // 构建哈希表 根据列表中的顺序 来对每个字母构建映射
        HashMap<Character, Character> map = new HashMap<>();
        for (int i = 0; i < len_key; ++ i)
        {
            map.put(key_arraylist.get(i), (char)(i + '0'));    
            // System.out.println(key_arraylist.get(i) + " " + (char)(i + '0'));


相关文章
|
2月前
|
算法 Java 数据安全/隐私保护
java MD5 32位加密
java MD5 32位加密
19 0
|
Java 数据安全/隐私保护
Java实现最电话号码的简单加密源码
Java实现最电话号码的简单加密源码
20 0
|
Java 数据安全/隐私保护
java实现加密电话号码,有具体的加密流程注释
java实现加密电话号码,有具体的加密流程注释
31 0
|
29天前
|
数据安全/隐私保护 C++
【C++】凯撒密码 实现加密与解密
【C++】凯撒密码 实现加密与解密
|
1月前
|
Java 数据安全/隐私保护
java base64 加密 解密
java base64 加密 解密
|
2月前
|
编解码 算法 安全
【Java技术专题】「入门到精通系列」深入探索Java技术中常用到的六种加密技术和实现
【Java技术专题】「入门到精通系列」深入探索Java技术中常用到的六种加密技术和实现
51 0
|
2月前
|
安全 Java 数据安全/隐私保护
提升 Java 编程安全性 - 代码加密混淆工具的重要性和应用
提升 Java 编程安全性 - 代码加密混淆工具的重要性和应用
|
2月前
|
安全 小程序 Java
java实现微信服务(公众)号用户关注时,获取openid,安全模式下的加密解密实现
java实现微信服务(公众)号用户关注时,获取openid,安全模式下的加密解密实现
32 0
|
3月前
|
存储 安全 算法
【接口加密】Java中的接口加密实践
【接口加密】Java中的接口加密实践
|
3月前
|
算法 安全 Java
Java 实现 RSA 非对称加密算法-加解密和签名验签
Java 实现 RSA 非对称加密算法-加解密和签名验签
102 0