Caesar算法的3种实现

Caesar(凯撒)密码加密源代码 Caesar密码 凯撒密码 源代码 自己写的,可能有问题,希望发现问题的朋友给我消息 flymybaby@126.com 代码中,只对ASCII码的字母进行加密或者解密,对于其他字符不进行任何处理。 如果你发现更好的实现,请给我留言,谢谢 立即下载

1、Ruby实现:caesar.rb
def encode(plaintext, offset)
 ciphertext = plaintext.dup
 for i in 0..(plaintext.length-1)
  if plaintext[i]>=?a && plaintext[i]<=?z
   ciphertext[i] = ?a + ((plaintext[i] - ?a + offset) % 26)
  elsif plaintext[i]>=?A && plaintext[i]<=?Z
   ciphertext[i] = ?A + ((plaintext[i] - ?A + offset) % 26)
  elsif plaintext[i]>=?0 && plaintext[i]<=?9
   ciphertext[i] = ?0 + ((plaintext[i] - ?0 + offset) % 10)
  end
 end
 print "Ciphertext: ", ciphertext
end

def decode(ciphertext, offset)
 plaintext = ciphertext.dup
 for i in 0..(ciphertext.length-1)
  if ciphertext[i]>=?a && ciphertext[i]<=?z
   plaintext[i] = ?a + ((ciphertext[i] - ?a - offset) % 26)
  elsif ciphertext[i]>=?A && ciphertext[i]<=?Z
   plaintext[i] = ?A + ((ciphertext[i] - ?A - offset) % 26)
  elsif ciphertext[i]>=?0 && ciphertext[i]<=?9
   plaintext[i] = ?0 + ((ciphertext[i] - ?0 - offset) % 10)
  end
 end
 print "Plaintext: ", plaintext
end

print "What do you want to do? (e)ncode or (d)ecode a text?[e/d]"
choose = gets
print "Please input offset value: "
offset = gets
offset = offset[0] - ?0
if choose == "e/n" || choose == "E/n"
 print "Please input the plaintext:"
 text = gets
 encode(text,offset)
else
 print "Please input the ciphertext:"
 text = gets
 decode(text,offset)
end
print "Press ENTER to return."
$stdin.gets



2、Groovy实现:caesar.groovy
import java.io.*;

def encode(plaintext, offset) {
 ciphertext = "";
 for (i in plaintext)
  switch(i) {
   case 'a'..'z':
    ciphertext += (char)((char)'a' + (((char)i - (char)'a' + offset) % 26));
    break;
   case 'A'..'Z':
    ciphertext += (char)((char)'A' + (((char)i - (char)'A' + offset) % 26));
    break;
   case '0'..'9':
    ciphertext += Integer.valueOf('0') + (((char)i - (char)'0' + offset) % 10);
  }
 println("Ciphertext: " + ciphertext);
}

def decode(ciphertext, offset) {
 plaintext = "";
 for (i in ciphertext)
  switch(i) {
   case 'a'..'z':
    plaintext += (char)((char)'a' + (((char)i - (char)'a' - offset) % 26));
    break;
   case 'A'..'Z':
    plaintext += (char)((char)'A' + (((char)i - (char)'A' - offset) % 26));
    break;
   case '0'..'9':
    plaintext += Integer.valueOf('0') + (((char)i - (char)'0' - offset) % 10);
  }
 println("Plaintext: " + plaintext);
}

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
print "What to you want to do? (E)ncode or Decode?[e/d]";
action = br.readLine();
print "Please input offset value: ";
int offset = Integer.valueOf(br.readLine());
print "Please input the "
if (action=='d' || action=='D') {
  print "ciphertext: ";
  decode(br.readLine(),offset);
} else {
 print "plaintext: ";
 encode(br.readLine(),offset);
}
println "Press ENTER..."
System.in.read();


3、Java实现:Caesar.java
import java.io.*;

public class Caesar {
 public static void encode(String PlainText, int Offset) {
  String CipherText = "";
  for (int i = 0; i < PlainText.length(); i++) {
   if (PlainText.charAt(i) >= 'a' && PlainText.charAt(i) <= 'z')
    CipherText += (char)('a' + ((PlainText.charAt(i) - 'a' + Offset) % 26));
   else if (PlainText.charAt(i) >= 'A' && PlainText.charAt(i) <= 'Z')
    CipherText += (char)('A' + ((PlainText.charAt(i) - 'A' + Offset) % 26));
   else if (PlainText.charAt(i) >= '0' && PlainText.charAt(i) <= '9')
    CipherText += (char)('0' + ((PlainText.charAt(i) - '0' + Offset) % 10));
  }
  System.out.println("Ciphertext: " + CipherText);
 }
 
 public static void decode(String CipherText, int Offset) {
  String PlainText = "";
  for (int i = 0; i < CipherText.length(); i++) {
   if (CipherText.charAt(i) >= 'a' && CipherText.charAt(i) <= 'z')
    PlainText += (char)('a' + ((CipherText.charAt(i) - 'a' - Offset) % 26));
   else if (CipherText.charAt(i) >= 'A' && CipherText.charAt(i) <= 'Z')
    PlainText += (char)('A' + ((CipherText.charAt(i) - 'A' - Offset) % 26));
   else if (CipherText.charAt(i) >= '0' && CipherText.charAt(i) <= '9')
    PlainText += (char)('0' + ((CipherText.charAt(i) - '0' - Offset) % 10));
  }
  System.out.println("PlainText: " + PlainText);
 }
 
 public static void main(String[] args) {
  try {
   BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
   System.out.print ("What to you want to do? (E)ncode or Decode?[e/d]");
   String action = br.readLine();
   System.out.print ("Please input offset value: ");
   int offset = Integer.valueOf(br.readLine());
   System.out.print ("Please input the ");
   if (action.equalsIgnoreCase("d")) {
     System.out.print("ciphertext: ");
     decode(br.readLine(),offset);
   } else {
    System.out.print("plaintext: ");
    encode(br.readLine(),offset);
   }
   System.out.println("Press ENTER...");
   System.in.read();
  } catch(IOException ex) {
   System.out.println(ex.getMessage());
  }
 }
}

维吉利亚密码c实现,加解密算法 维吉利亚密码c语言实现,加解密算法,古典密码体系 立即下载

相关推荐

Caesar加密算法

Caesa加密、解密算法,用c/c++语言实现

加密技术(学习笔记=)Caesar算法

一个传统的算法(拥有2000年历史)非常古老的算法,就是字母移动位.. 比如: //--直接让字符串+偏移位(甚至可以减去偏移位) char aaa = Convert.ToChar(('中'+2) ); Console.WriteLine(aaa); //---解密的时候反转就可以了 char bbc = Convert.ToC...

weixin_30722589的博客 251

凯撒密码加密解密(含实验报告+c语言完美版)

自己随便写的 用C语言实现的凯撒密码的加密解密小程序 密钥可以为任意整数 明文密文可以任意字符 含实验报告

探索复古魅力:体验openCaesar3——重塑经典城市建造之旅

探索复古魅力:体验openCaesar3——重塑经典城市建造之旅 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在历史的长河中,有一款游戏以其独特的策略与建设魅力,让无数玩家沉浸于古罗马的辉煌之中——那就是1998年的经典之作《Caesar III》。而今,一款致敬经典的开源项目【openCaesar3】正悄然兴起,它旨在重现这款城市建设模拟游戏的辉煌,带你穿越回那个...

gitblog_00006的博客 598

JAVA实现caesar凯撒加密算法

Carsar加密算法是最简单的加密算法,原理是把一个字母在字母表中移动相应的位置,比如输入a,将其移动3位,经过Caesar加密后输出的d,位置可以循环移动,输入x,则输出a

ENVI水体提取流程实践与问题

ENVI水体提取流程实践与问题 卫片解译中,水体属于比较好判别的一类。有水体指数、阈值法、监督分类等一系列方法进行提取,今天介绍利用水体指数和ENVI提取水体的过程。 1.所用数据 Landsat8卫片1景、ENVI5.3。 2.辐射定标与水陆分离 由于要对卫片进行水体指数的计算,因此需要对数据进行辐射定标以及大气校正的预处理。 辐射定标就是将图像的数字量化值(DN)转化为辐射亮度值或者反射率或者表面温度等物理量的处理过程。在工具栏中搜索Radiometric Correction,点开进行辐射定标。

Soul_taker的博客 4万+

凯撒密码(Caesar)加密解密算法C/C++实现

任成风2018年5月20日星期日博客首发地址:个人博客网站 http://fairycity.wang,内容以个人博客为主,修正后的博文见个人博客,请点击访问。本文的框架:摘要和关键字: 1、  引言 2、  凯撒密码(Caesar)基本原理 3、  凯撒密码(Caesar)加密算法 4、  凯撒密码(Caesar)解密算法 5、  C/C++程序框架 6、  结束语  摘要:凯撒密码...

qq_36134761的博客 8万+

OCV/AOCV/SOCV的介绍和应用

library中的cell delay是在某个固定的PVT(operating condition)下仿真得出的。,cell的delay并不是一个固定值,而是一个随机值,遵循高斯分布或门特卡洛分布,在STA中用OCV来模拟这一『特征』。OCV全称on chip variation,用于描述不同管子间由于工艺偏差、电压降、温度变化引起的delay变化。,也用于描述工艺偏差引起的net厚度宽度的变化从而导致net的电容电阻变化。优点:设置起来比较简单粗暴,对于不那么先进的工艺可行!的影响,更贴合实际。

m0_61003348的博客 8979

凯撒加密

$key = '3ae'; $s = caesar_encode('us3kqvu', $key); echo "$s\n"; echo caesar_decode($s, $key); function caesar_encode($s, $k) { $k = "$k"; for($i=0; $i<strlen($k); $i++) { $d = base_convert($k

点滴记忆成长瞬间 1010

别再拍脑袋估工时了!手把手教你用FPA功能点分析法,给软件项目算笔明白账

本文详细介绍了FPA功能点分析法在软件开发工作量评估中的应用,帮助团队告别拍脑袋估算。通过量化系统功能组件,FPA提供客观的工时和成本预估,特别适合需求不明确的项目初期。文章以财务系统为例,拆解FPA计算流程,并分享实用估算模板,助力技术管理者提升项目规划能力。

weixin_42614269的博客 387

STM32F407步进电机控制及DM542驱动器使用

基于DM542驱动器的步进电机简单控制

qq_43868701的博客 1万+

C语言中基础对称加密算法(如Caesar密码和XOR)及哈希函数的实现(一)

加密技术作为计算机科学与信息安全领域的基石,旨在保护敏感信息免受未经授权的访问、篡改或披露。它通过将明文数据转化为看似随机的密文形式,确保只有持有正确密钥或具备特定解密知识的授权实体才能恢复原始信息。

weixin_56154577的博客 1500

Qt图表库三选一:Qwt、QChart、QCustomPlot实战性能对比与避坑指南

本文深入对比了Qt开发中三大主流图表库Qwt、QChart和QCustomPlot的性能与适用场景。通过实测数据展示各库在渲染效率、内存占用和功能特性上的差异,并提供针对不同项目需求的选型建议和集成避坑指南,帮助开发者高效选择最适合的Qt图表解决方案。

weixin_33691700的博客 449

古典密码Caesar的算法实现1

本文阐述Caesar密码3位固定移位规则与数学模型,解析其映射表法加密、数学运算法解密的实现逻辑。

qq_56268978的博客 1399

PCL RANSAC拟合分割多条直线【2026最新版】

使用RANSAC算法拟合分割多条直线,输出每一条直线的拟合参数到控制台,并保存直线点云到本地文件夹。博客长期更新,本文最新更新时间为:2026年5月24日。

点云侠的博客 7974

C#上位机面试必问30题:机器视觉+工业通信+性能优化(含答案解析)

工业通信:围绕“稳定性”展开,重点答异常处理、断线重连、资源释放;机器视觉:围绕“精度+速度”展开,重点答预处理、ROI、参数优化;性能优化:围绕“UI不卡、内存不泄、效率不低”展开,重点答异步、限流、资源复用;面试加分项:结合实际项目案例(如“我在XX项目中用信号量解决了多设备并发卡顿问题”)。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1508

Caesar加密与解密简单实现

默认密钥K=3, 加密程序 #include &lt;cstdio&gt; #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main(){ freopen("Caesar1.txt","r",stdin); freopen("Caesar2.txt"..

HowieMen的博客 3232

LLC电路细讲笔记(二)LLC谐振转换器:频率、增益与Q值的详细探讨

这本电子书通过详细分析LLC谐振转换器的工作原理、等效电路和增益公式,帮助读者深入理解如何设计和优化谐振转换器系统。通过这些公式和设计方法,工程师可以根据不同的应用需求调整参数,实现高效的电能转换。

weixin_43199439的博客 6880

【字符串】第2关:恺撒加密第3步(按密钥加密)

例如:明文是"ATTACK IN THE MORNING",密钥k为3,则密文是"DWWDFN LQ WKH PRUQLQJ"。

[] 1251

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

移位密码

移位密码 当k=3时此时为caesar密码加密算法 #include using namespace std; char s[110]; int main() { int i,j,k; while(~scanf("%s",s)) { scanf("%d",&k); int len=strlen(s); for(i=0;i<le

跟随内心的渴望 2988

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

恺撒加密解密——Python

记录一下自己入门密码学接触的第一个密码算法。

lYc 1064

凯撒密码

#include #include void caesar(char *s, int n) { while (*s) { *s += n; s++; } } int main(void) { char s[] = "MOMOTARO"; caesar(s, 3); puts(s); return 0; }

laciqs 1774

python challenge第二关

我使用的版本为Python3.0以上的版本 这关的解题思路就是将所有字母位移两个位置得到新的字母 需注意以下两点: 1.非字母的字符不要对它进行转换 2.y的acsii码为121,位移两位后它会变成a(97)而不是acsii为123的字符 解题过程如下: 我将这个字符转换为序列,方便我进行字符的更改操作 这里的temp<97是为了把非字母的字符筛掉,出题者提供的非字母的字符acsii值均小于97 ord()将字母转换为对应的acsii chr()将acsii的值转换为对.

vickylolo的博客 297

加密算法学习(一、上)——传统加密算法(基础概念、Caesar密码、仿射密码)

本博文借鉴自书本《密码编码学与网络安全——原理与实践(第七版)》,由William Stallings著,王后珍、李莉等译。 一、相关基础概念 1.广泛使用的密码算法与协议可分为以下四个主要领域: 对称加密: 加密任意大小的数据块或数据流的内容,包括消息、文件、加密秘钥和口令。 非对称加密: 加密小数据块,如加密密钥或数字签名中使用的散列函数值。 数据完整...

菜鸟博客 5162

caesar java_java实现caesar加解密算法

凯撒大帝不仅战功卓越,同时对密码算法也是很有研究啊。下面要介绍的加密算法就是由其本人研究并在战争中使用,包括对后人也有着深远的影响。好了,不扯淡了,下面步入正题。凯撒加密(Caesar cipher)是一种简单的消息编码方式:它根据字母表将消息中的每个字母移动常量位k。举个例子如果k等于3,则在编码后的消息中,每个字母都会向后移动3位:a会被替换为d;b会被替换成e;依此类推。字母表末尾将回卷到字...

weixin_32896083的博客 286
上一篇: 第一个Ruby程序
下一篇: Caesar算法的3种实现
dingx
博客等级 码龄24年 67粉丝 112原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值