Caesar Cipher

2024-02-03 03:58
文章标签 cipher caesar

本文主要是介绍Caesar Cipher,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目:

In cryptography, a Caesar cipher, also known as the shift cipher, is one of the most straightforward and most widely known encryption techniques.It is a type of substitution cipher in which each letter in the plaintext is replaced by a letter some fixed number of positions up (or down) the alphabet.

For example, with the right shift of 1919, A would be replaced by TB would be replaced by U, and so on.A full exhaustive list is as follows:

Now you have a plaintext and its ciphertext encrypted by a Caesar Cipher.You also have another ciphertext encrypted by the same method and are asked to decrypt it.

Input Format

The input contains several test cases, and the first line is a positive integer TT indicating the number of test cases which is up to 5050.

For each test case, the first line contains two integers nn and m~(1 \le n,m \le 50)m (1≤n,m≤50) indicating the length of the first two texts (a plaintext and its ciphertext) and the length of the third text which will be given.Each of the second line and the third line contains a string only with capital letters of length nn, indicating a given plaintext and its ciphertext respectively.The fourth line gives another ciphertext only with capital letters of length mm.

We guarantee that the pair of given plaintext (in the second line) and ciphertext (in the third line) is unambiguous with a certain Caesar Cipher.

Output Format

For each test case, output a line containing Case #x: T, where xx is the test case number starting from 11, and TT is the plaintext of the ciphertext given in the fourth line.

样例输入

1
7 7
ACMICPC
CEOKERE
PKPIZKC

样例输出

Case #1: NINGXIA

分析:

签到题,没什么好分析的啦根据给出的两列,计算出之间的关系

代码:

#include<stdio.h>
#include<algorithm>
#include<iostream>
#include<map>
using namespace std;
char s1[55],s2[55],s[55];
int n,m;
int main()
{
    int k,casee=0,i,a;
    char b;
    scanf("%d",&k);
    while(k--)
    {
        scanf("%d %d",&n,&m);
        scanf("%s",s1);
        scanf("%s",s2);
        a=s2[0]-s1[0];
        scanf("%s",s);
        printf("Case #%d: ",++casee);
        for(i=0;i<m;i++)
        {
            b=s[i]-a;
            if(b-'A'<=0)
                b=b+26;
            if(b-'Z'>0)
                b=b-26;
            printf("%c",b);
        }
        printf("\n");
    }
    return 0;
}
 

这篇关于Caesar Cipher的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/672921

相关文章

NSSCTF练习记录:[SWPUCTF 2021 新生赛]ez_caesar

题目: import base64def caesar(plaintext):str_list = list(plaintext)i = 0while i < len(plaintext):if not str_list[i].isalpha():str_list[i] = str_list[i]else:a = "A" if str_list[i].isupper() else "a"st

第八届湘潭大学程序设计比赛 Problem C Cipher Lock

Cipher Lock Accepted : 33 Submit : 130Time Limit : 2500 MS Memory Limit : 65536 KB  题目描述 守护着神秘宝藏One Piece的是一把非常神秘的密码锁,这个密码锁有n排滚轮,每个滚轮有m个格子,刻着0,1两种数字。作为一把神秘的密码锁,开锁的方式却非常的简单,只要向左或向右转动滚轮使某一列的数字全

OC的DES加密,使与java的Cipher类用DES/CBC/PKCS5Padding方式的加密结果相同

问题说明: 最近用到DES加密,并且要与java的Cipher类加密的结果保持一致。没研究过java的Cliper,但工作中Cipher根据DES/CBC/PKCS5Padding加密方式生成了一个字符串。比较后发现,此字符串与将OC加密生成的NSData直接用字符串格式化([NSString stringWithFormat:@"%@",data])相同。所以就先这么用了。 代码如下:

JS:Caesars Cipher(凯撒密码)

Caesars Cipher 凯撒密码 (让上帝的归上帝,凯撒的归凯撒) 下面我们来介绍风靡全球的凯撒密码Caesar cipher,又叫移位密码。 移位密码也就是密码中的字母会按照指定的数量来做移位。 一个常见的案例就是ROT13密码,字母会移位13个位置。由’A’ ↔ ‘N’, ‘B’ ↔ ‘O’,以此类推。 写一个ROT13函数,实现输入加密字符串,输出解密字符串。 所有的字母都

鸿蒙开发接口安全:【@system.cipher (加密算法)】

加密算法  说明: 本模块首批接口从API version 3开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import cipher from '@system.cipher' cipher.rsa rsa(Object): void RSA 算法加解密。 系统能力:  SystemCapability.Security.Cipher 参数:

call to undefined function openssl cipher iv length() 报错 PHP7开启OpenSSL扩展失败 阿星小栈...

在安装laravel5.5后, 访问显示报错。 call to undefined function openssl cipher iv length() 经查为php7.1的OpenSSL扩展加载失败导致 恢复方法  检查http.conf   LoadModule ssl_module modules/mod_ssl.sophp.ini开启extension=php_open

【CTF Crypto】XCTF GFSJ0523 Caesar Writeup(凯撒密码)

Caesar 你成功的解出了来了灯谜,小鱼一脸的意想不到“没想到你懂得这么多啊!” 你心里面有点小得意,“那可不是,论学习我没你成绩好轮别的我知道的可不比你少,走我们去看看下一个” 你们继续走,看到前面也是热热闹闹的,同样的大红灯笼高高挂起,旁边呢好多人叽叽喳喳说个不停。你一看 大灯笼,上面还是一对字符,你正冥思苦想呢,小鱼神秘一笑,对你说道,我知道这个的答案是什么了 原理 凯撒密码(C

ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value

新建用户: insert into mysql.user(user,host,password) values("test","%",password("test")); 出现以下提示: ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value 解决办法: 找到安装目录中的mysql.ini 修改 sq

POJ 2159 Ancient Cipher 杂题

题意:给定 str1, str2, 如果 str2 经过加密可以变成 str1。 输出YES,否则输出NO. 加密方式有两种,一种是改变字符,一种是调换顺序。 题解:这题还是耽搁了一会儿。一开始把题意理解错了,将substitution cipher (置换密码):当做按字典序偏移任意个位置。所以一直WR。 看了别人的解释: “substitution cipher (置换密码): S

例题4-1 古老的密码(Ancient Cipher,NEERC 2004,UVa1339)

原题链接:https://vjudge.net/problem/UVA-1339 分类:函数 备注:思维 分析:因为每种字母可以映射的字母不受限制,那么可以映射的字母出现的次数要相同即可,在两个字符串中都有相对应的字母出现的次数相同就能达到题目条件。 作者把此题列出来的一个重要应该是为了让我们见识一下函数作为函数参数吧。毕竟本章是讲函数和递归。 代码如下:按作者的意思来 #include<std