移位密码

描述

移位密码是最简单的一类代替密码,具体算法就是将字母表的字母右移k个位置(k<26),并对字母表长度作模运算。

现给你一串密文,全部由大写字母组成。已知加密过程为:将每个字母按照字母表的顺序右移k位。

加密函数:E(m)=(m+k)%q.

请破译出明文!

输入
输入包含多组测试数据(少于1000组)。
每组数据包含一个字符串和一个整数k(k<26),中间用空格隔开,字符串全部由大写字母组成,长度小于50,k表示向右移动的位数.
输出
输出每组密文所对应的明文,每组输出占一行。
样例输入
JMPWFZPV 1
样例输出
ILOVEYOU
 1 import java.util.Scanner;
 2
 3 public class Main {
 4     public static void main(String[] args) {
 5         Scanner scanner=new Scanner(System.in);
 6         char s[];
 7         int k;
 8         int i;
 9         int temp;
10
11         while(scanner.hasNext()){
12             s=scanner.next().toCharArray();
13             k=scanner.nextInt();
14
15             for(i=0;i<s.length;i++){
16                 s[i]-=k;
17
18                 if(Character.isUpperCase(s[i])==false)
19                     s[i]+=26;
20             }
21             System.out.println(s);
22         }
23     }
24 }
25
26             
 
时间: 2024-08-09 19:08:39

移位密码的相关文章

NYOJ 768 移位密码

#include<stdio.h>#include<string.h>int main(){ int i,m,len; char s[55]; while(~scanf("%s%d",s,&m)) { len=strlen(s); for(i=0;i<len;i++) { s[i]-=m; if(s[i]<'A') s[i]+=26; printf("%c",s[i]); } printf("\n");

nyoj-移位密码

移位密码 时间限制:1000 ms  |  内存限制:65535 KB 难度:0 描述 移位密码是最简单的一类代替密码,具体算法就是将字母表的字母右移k个位置(k<26),并对字母表长度作模运算. 现给你一串密文,全部由大写字母组成.已知加密过程为:将每个字母按照字母表的顺序右移k位. 加密函数:E(m)=(m+k)%q. 请破译出明文! 输入 输入包含多组测试数据(少于1000组). 每组数据包含一个字符串和一个整数k(k<26),中间用空格隔开,字符串全部由大写字母组成,长度小于50,k表

维吉尼亚密码的Python实现

代换密码体制的一般定义为M=C=K=Z26,其中M为明文空间.C为密文空间.K为密钥空间.Z26为26个整数(对应26个英文字母)组成的空间:要求26个字母与模26的剩余类集合{0,1,2,-,25}建立一一对应的关系. 1.移位密码 移位密码的加密实现上就是将26个英文字母向后循环移动k位,其加解密可分别表示为: c=Ek(m)=m+k(mod 26) m=Dk(c)=c-k(mod 26) 其中,m.c.k是满足0≤m,c,k≤25的整数. 2.维吉尼亚密码 Vigenenre密码是最著名的

古典密码-多表密码体制

如果明文中不同的位置的同一明文字母在密文中对应的密文字母不同,则称为多表密码体制. 代表性的多表密码: 1.Vigenere密码 2.Beaufort密码 3.running-key密码 4.Vernam密码 5.Hill密码 例子: 1.Vigenere密码加密: 设明文   m=m1m2...mn 密钥      k = k1k2...kn 则密文   c=Ek(m)=c1c2...cn 其中      ci=(mi+ki)(mod 26),(i=1,2,...,n) Vigenere密码解

FreeCodeCamp之凯撒密码

下面我们来介绍风靡全球的凯撒密码Caesar cipher,又叫移位密码.移位密码也就是密码中的字母会按照指定的数量来做移位.一个常见的案例就是ROT13密码,字母会移位13个位置.由'A' ? 'N', 'B' ? 'O',以此类推. 学习使用String.fromCharCode()和string.charCodeAt()注意第一个为静态方法,不能定义一个字符串然后使用他,像这样myStr.fromCharCode();是错误的,只能是String.fromCharCode(number1,

单表代替密码原理及算法实现

   要了解单表替代密码就得先了解替代密码,在这里我就做一下简单的介绍:      替代是古典密码中用到的最基本的处理技巧之一 .      替代密码是指先建立一个替换表,加密时将需要加密的明文依次通过查表,替换为相应的字符,明文字符被逐个替换后,生成无任何意义的字符串,即密文,替代密码的密钥就是其替换表.      根据密码算法加解密时使用替换表多少的不同,替代密码又可分为单表替代密码和多表替代密码.      单表替代密码的密码算法加解密时使用一个固定的替换表.单表替代密码又可分为一般单表替

CTF中常见密码题解密网站总结

0x00.综合 网站中包含大多编码的解码. http://web2hack.org/xssee/ https://www.sojson.com/ http://web.chacuo.net/ 0x01.文字倒序排列 http://www.qqxiuzi.cn/zh/daoxu/ 0x02.cmd5解密 http://www.cmd5.com/ http://pmd5.com/ http://tool.chinaz.com/Tools/MD5.aspx http://md5jiami.51240.

古典密码简介

从密码学发展历程来看,可分为古典密码(以字符为基本加密单元的密码)以及现代密码(以信息块为基本加密单元的密码)两类.而古典密码有着悠久的历史,从古代一直到计算机出现以前,古典密码学主要有两大基本方法: ①置换密码(又称易位密码):明文的字母保持相同,但顺序被打乱了. ②代替密码:就是将明文的字符替换为密文中的另一种的字符,接收者只要对密文做反向替换就可以恢复出明文. 古典密码是密码学的根源,虽然都比较简单而且容易破译,但研究古典密码的设计原理和分析方法对于理解.分析以及设计现代密码技术是十分有益

单表代替密码

凯撒密码 Caser密码是古典加密的一种,由Julius Caser发明,当时发明的那种就是将26个英文字母按字母表循环移位,按顺序依次a -> d , b -> e , c -> f......根据移位不同统称为移位密码. 按照密码体制五元组 P = { a,b,c......z } C = { a,b,c......z } K = { 0,1,2......25 } 若是Caser密码,得到加密算法 E p = ( p + 3 ) mod 26 若移位可以是任意整数,得到加密算法 E