NO.4凯撒密码

在密码学中,恺撒密码是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。这个加密方法是以恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。

例如,下面是凯撒密码的偏移量k=3的情况

初始字母顺序:  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
凯撒变换后 :  D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

这样,消息"VENI, VIDI, VICI"(著名的恺撒语录:拉丁语,意思"I came, I saw, I conquered",中文译为“我来了,我看见了,我征服了”),就将被加密为"YHQL, YLGL, YLFL"。

请编写代码实现恺撒密码。

输入:

偏移量K

待加密的字符串

输出:

加密后的字符串。注意只需用对大小写字母进行变换,其它字符原样输出

样例输入:

3

ThequickbrownFOXjumpsoverthelazyDOG.

Abirdinthehandisworththantwointhebush.

Failureisthemotherofsuccess.

样例输出:

WkhtxlfneurzqIRAmxpsvryhuwkhodcbGRJ.

Deluglqwkhkdqglvzruwkwkdqwzrlqwkhexvk.

Idloxuhlvwkhprwkhurivxffhvv.

01.import java.util.Scanner;  
02./* 
03. * 恺撒密码 
04. */  
05.public class Main {  
06.    public static void main(String[] args)throws Exception {  
07.        Scanner cin = new Scanner(System.in);  
08.        //定义偏移量  
09.        int k = cin.nextInt();  
10.        //输入要加密的内容  
11.        String insertStr = cin.nextLine();  
12.        //调用加密处理方法  
13.        while(cin.hasNext()){  
14.            insertStr = cin.nextLine();   
15.            deal(insertStr,k);  
16.        }  
17.    }  
18.    //根据偏移量k处理字符  
19.    private static void deal(String text,int k){  
20.        //在录入的字符转换为字符数组  
21.        char [] dealStr = text.toCharArray();  
22.        for(int i=0;i<dealStr.length;i++){  
23.          //如果为小写字母时      
24.          if(dealStr[i]>='a' && dealStr[i]<='z'){  
25.              //根据字符acsi表编码序号  
26.              dealStr[i]=(char)(((int)dealStr[i] + k - (int)'a')%26 + (int)'a');  
27.          //如果为大写字母时            
28.          }else if(dealStr[i]>='A' && dealStr[i]<='Z'){  
29.              //根据字符acsi表编码序号  
30.              dealStr[i]=(char)(((int)dealStr[i] + k - (int)'A')%26 + (int)'A');  
31.          }  
32.        }  
33.        //输出加密后字符  
34.        System.out.println(dealStr);  
35.        //退出程序  
36.        System.exit(0);  
37.    }   
38.}  




 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值