发布时间:2026/8/25 14:11:10
【算法】Java凯撒密码实现方法 文章目录【算法】Java凯撒密码实现方法1、凯撒密码介绍2、凯撒密码的实现2.1、基于ASCII码实现凯撒密码2.2、基于字母表实现的凯撒密码【算法】Java凯撒密码实现方法1、凯撒密码介绍凯撒密码作为一种最简单的消息加密方式在古罗马的时候都已经很流行他的基本思想是通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后或向前按照一个固定数目进行偏移后被替换成密文。例如当偏移量是3的时候所有的字母A将被替换成DB变成E由此可见位数就是凯撒密码加密和解密的秘钥。2、凯撒密码的实现在此之前我们必须得了解一个基本概念“移位和循环移位”移位和循环移位​ 移位就是将一段数码按照规定的位数整体性地左移或右移。循环右移就是当右移时把数码的最后的位移到数码的最前头循环左移相反。​ 例如对十进制数码0123456789右移一位十进制位的结果为9012345678而循环左移一位得到的结果则为1234567890。凯撒密码就是使用的循环移位2.1、基于ASCII码实现凯撒密码加密方法如下Testpublicvoidtest(){StringabcasciiCaesarEncrypt(ABC,125);System.out.println(abc);}publicStringasciiCaesarEncrypt(Stringstr,intoffset){char[]charsstr.toCharArray();for(inti0;ichars.length;i){intoriginalchars[i];inti1originaloffset;if(i1127){i1i1%128;chars[i](char)i1;}elseif(i10){intabsMath.abs(i1)%128;if(abs0){chars[i](char)0;}else{chars[i](char)(128-abs);}}else{chars[i](char)i1;}}returnString.valueOf(chars);}上面的运行结果 ?解密方法如下publicStringasciiCaesarDecrypt(Stringstr,intoffset){char[]charsstr.toCharArray();//循环位移算法for(inti0;ichars.length;i){inti1chars[i]-offset;if(i1127){i1i1%128;chars[i](char)i1;}elseif(i10){intabsMath.abs(i1)%128;if(abs0){chars[i](char)0;}else{chars[i](char)(128-abs);}}else{chars[i](char)i1;}}returnString.valueOf(chars);}2.2、基于字母表实现的凯撒密码加密方法如下Testpublicvoidtest(){StringabclowerCaseCaesarEncrypt(zabc,25);System.out.println(abc);}publicStringlowerCaseCaesarEncrypt(Stringstr,intoffset){char[]charsstr.toCharArray();char[]lowerCasenewchar[26];for(inti0;i26;i){lowerCase[i](char)(ai);}StringlowerCaseStrString.valueOf(lowerCase);for(inti0;ichars.length;i){intidxlowerCaseStr.indexOf(chars[i]);// 非小写字母直接跳过防止index-1乱码if(idx-1)continue;inti1idxoffset;if(i125){i1i1%26;chars[i]lowerCase[i1];}elseif(i10){intabsMath.abs(i1)%26;// 修复越界abs为0时下标直接取0if(abs0){chars[i]lowerCase[0];}else{chars[i]lowerCase[26-abs];}}else{// 统一查表不再直接ASCII加减chars[i]lowerCase[i1];}}returnString.valueOf(chars);}上面的运行结果 yzab解密方法如下publicStringlowerCaseCaesarDecrypt(Stringstr,intoffset){char[]charsstr.toCharArray();char[]lowerCasenewchar[26];for(inti0;i26;i){lowerCase[i](char)(ai);}StringlowerCaseStrString.valueOf(lowerCase);for(inti0;ichars.length;i){intidxlowerCaseStr.indexOf(chars[i]);// 新增非小写字母直接跳过if(idx-1)continue;inti1idx-offset;if(i125){i1i1%26;chars[i]lowerCase[i1];}elseif(i10){intabsMath.abs(i1)%26;chars[i]lowerCase[(26-abs)%26];}else{// 修改统一查表不再直接ASCII相减chars[i]lowerCase[i1];}}returnString.valueOf(chars);}本文到此完毕

相关新闻

2026/8/25 4:53:19

软件产品类型、云计算、网段计算

目录 软件产品类型 移动端和PC端 电子商务商业模式‌ 主流B端(企业级)产品 云计算 网段计算 1. 什么是子网掩码? 2. 如何区分两个IP是否在同一网段? 软件产品类型 移动端和PC端 移动端 App:移动端桌面应用(如百词斩、支付…

2026/8/25 13:09:58

Navicat无限试用终极方案:3分钟解决macOS试用期到期难题

Navicat无限试用终极方案:3分钟解决macOS试用期到期难题 【免费下载链接】navicat_reset_mac navicat mac版无限重置试用期脚本 Navicat Mac Version Unlimited Trial Reset Script 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 你是否正…

2026/8/25 19:12:01

learn-opengl入门

opengl是一个大状态机 环境配置 1.下载GLFW源代码 2.创建librarel文件包含include目录和第三方库libs 3.include直接从GLFW的源代码中拿,libs里需要编译生成的库glfw3.lib。 4.通过CMake编译源代码拿到glfw3.lib。 5.将我们的librarel加入编辑器的包含文件和库目录里&#xff0…

2026/8/25 22:29:01

电站数据丢了能恢复吗?备份与恢复演练的工程清单

电站数据丢失,最常见的场景不是硬盘坏了,而是没人演练过恢复:网关重装、平台迁移、误删数据表,真出事时才发现备份没接上、恢复要一周。数据备份和恢复演练,应该像消防演练一样定期做。本文给出一份电站数据备份与恢复…

2026/8/25 22:29:01

被供应链坑过的老板,都懂这3个问题

半夜两点,手机狂震。你迷迷糊糊接起来,听到最怕的一句话:“老板,货又发错啦!”订单对不上、库存理不清、月底对账想骂娘——被供应链这么折腾过的老板,最后都会问:到底有没有好用的中台&#xf…

2026/8/25 22:29:01

【ESP32】串口错误

ESP32串口错误很多新手一不小心就掉进了以下错误,还到处找这是哪个函数进行打印的?它来自哪里,为什么会发生这样的错误?--- Error: GetOverlappedResult failed (PermissionError(13, 鎷掔粷璁块棶銆?, None, 5)) --- Waiting fo…

2026/8/25 22:29:01

计算机三级:NAT地址转换

计算机三级:NAT地址转换一. NAT是网络地址转换二. 例题一. NAT是网络地址转换 将内部专用的IP地址,转换为外部公用的IP地址 S源地址(从哪里来的) D目的地址(到哪里去的) 注意符号的书写,进制之间用点号隔开,端口号用逗号 下图是…

2026/8/25 22:29:01

[完结15章]Java转 AI高薪领域必备-从0到1打通生产级AI Agent开发

在人工智能应用从“被动问答”向“主动执行”跨越的当下,ReAct(Reasoning Acting)智能体模式成为了赋予大模型“手脚”与“大脑”的核心范式。与传统的检索增强生成(RAG)或单纯的函数调用不同,ReAct 强调让…

2026/8/25 22:24:01

FigmaCN:5分钟把Figma界面改成中文

FigmaCN:5分钟把Figma界面改成中文 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN FigmaCN 是一款把 Figma 英文界面翻译成中文的汉化插件,词条由设计师人工校验…

2026/8/25 1:04:19

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/25 11:48:27

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/25 16:56:43

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/25 0:04:14

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory Meta Description:GetQzonehistory 是一个QQ空间历史说…

2026/8/25 0:04:14

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

【题目来源】 https://www.luogu.com.cn/problem/P7912 【题目描述】 小熊的水果店里摆放着一排 n 个水果。每个水果只可能是苹果或桔子,从左到右依次用正整数 1,2,…,n 编号。连续排在一起的同一种水果称为一个“块”。小熊要把这一排水果挑到若干个果篮里&#x…

2026/8/24 13:42:17

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/24 18:13:48

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/25 1:08:14

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…