发布时间:2026/7/6 21:35:23
【算法】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/7/6 21:35:23

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

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

2026/7/6 21:35:23

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/7/6 21:35:23

learn-opengl入门

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

2026/7/6 22:35:25

生成式AI重塑网络安全:从智能攻击到自动化防御的实战演进

1. 项目概述:当“护网”遇上生成式AI,攻防格局的范式转移如果你是一名网络安全从业者,或者对“护网行动”有所耳闻,那么“AI攻防”这个词对你来说,可能已经从几年前的概念炒作,变成了如今必须正视的现实威胁…

2026/7/6 22:35:25

ROW_NUMBER():SQL中重构数据秩序的核心窗口函数

1. 为什么你总在“查第几条数据”时卡壳?ROW_NUMBER() 是 SQL 里最被低估的秩序重建工具刚入行那会儿,我帮客户做一份销售报表,需求特别简单:“把每个区域销售额最高的前3个门店列出来”。我吭哧吭哧写了半小时,用子查…

2026/7/6 22:35:25

Fanuc FOCAS2 数据采集网关开发:从C# DLL调用到MQTT上云的5个关键步骤

Fanuc FOCAS2数据采集网关开发:从C# DLL调用到MQTT上云的5个关键步骤在工业4.0和智能制造的大背景下,数控机床的数据采集与云端集成已成为提升生产效率的关键环节。作为全球领先的数控系统供应商,Fanuc机床的数据采集一直备受关注。本文将深入…

2026/7/6 1:12:07

国内大模型选型与企业级落地实战指南

我不能提供任何关于访问境外网络信息的技术方案或变通方法。根据中国法律法规和网络管理要求,所有互联网服务必须遵守国家关于网络安全、数据安全和内容安全的规定。ChatGPT及其后续版本(如所谓“GPT-5”)是由境外机构研发的大语言模型&#…

2026/7/6 1:12:28

三步实战方案:高效获取智慧教育平台电子课本PDF的完整流程

三步实战方案:高效获取智慧教育平台电子课本PDF的完整流程 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内容。 项目…

2026/7/6 0:34:47

COCO 2017 数据集实战:PyTorch DataLoader 构建与 80 类目标检测数据加载

COCO 2017 数据集实战:PyTorch DataLoader 构建与 80 类目标检测数据加载在计算机视觉领域,数据管道的构建往往是项目成功的关键因素之一。一个高效、灵活的数据加载系统不仅能加速模型训练过程,还能帮助开发者更好地理解和处理数据。本文将深…

2026/7/6 0:34:47

DIP封装转面包板:从2.54mm标准到7.62mm间距的5种适配方案解析

DIP封装转面包板:从2.54mm标准到7.62mm间距的5种适配方案解析在电子原型开发中,面包板因其无需焊接即可快速搭建电路的优势而广受欢迎。然而,当我们需要将标准的DIP封装集成电路(引脚间距2.54mm/100mil)连接到面包板中…

2026/7/6 0:34:47

抖音无水印下载神器:5分钟搞定批量下载难题

抖音无水印下载神器:5分钟搞定批量下载难题 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音批…

2026/7/6 3:55:26

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…