C 和 Java 中的凯撒密码
什么是凯撒密码?
它是最简单的加密技术之一,其中纯文本中的每个字符都被一个字符替换为某个固定位置的字符。
例如,如果 key 为 3,那么我们必须将字符替换为向下 3 位的另一个字符。就像A将被D替换,C将被F替换等等
对于解密,只需按照加密过程的逆向操作。
C 中的凯撒密码
加密
#include<stdio.h>
int main()
{
char message[100], ch;
int i, key;
printf("输入要加密的文本: ");
gets(message);
printf("输入key: ");
scanf("%d", &key);
for(i = 0; message[i] != '\0'; ++i){
ch = message[i];
if(ch >= 'a' && ch <= 'z'){
ch = ch + key;
if(ch > 'z'){
ch = ch - 'z' + 'a' - 1;
}
message[i] = ch;
}
else if(ch >= 'A' && ch <= 'Z'){
ch = ch + key;
if(ch > 'Z'){
ch = ch - 'Z' + 'A' - 1;
}
message[i] = ch;
}
}
printf("密文: %s", message);
return 0;
}
解密
#include<stdio.h>
int main()
{
char message[100], ch;
int i, key;
printf("输入要解密的文本: ");
gets(message);
printf("输入key: ");
scanf("%d", &key);
for(i = 0; message[i] != '\0'; ++i){
ch = message[i];
if(ch >= 'a' && ch <= 'z'){
ch = ch - key;
if(ch < 'a'){
ch = ch + 'z' - 'a' + 1;
}
message[i] = ch;
}
else if(ch >= 'A' && ch <= 'Z'){
ch = ch - key;
if(ch < 'A'){
ch = ch + 'Z' - 'A' + 1;
}
message[i] = ch;
}
}
printf("原文: %s", message);
return 0;
}
Java中的凯撒密码
加密
import java.util.Scanner;
public class Caser {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char[] message;
char ch;
int key;
System.out.printf("输入要加密的文本: ");
message = sc.next().toCharArray();
System.out.printf("输入key: ");
key = sc.nextInt();
for(int i = 0; i < message.length; ++i){
ch = message[i];
if(ch >= 'a' && ch <= 'z'){
ch = (char) (ch + key);
if(ch > 'z'){
ch = (char) (ch - 'z' + 'a' - 1);
}
message[i] = ch;
}
else if(ch >= 'A' && ch <= 'Z'){
ch = (char) (ch + key);
if(ch > 'Z'){
ch = (char) (ch - 'Z' + 'A' - 1);
}
message[i] = ch;
}
}
System.out.printf("密文: "+ String.valueOf(message));
}
}
解密
import java.util.Scanner;
public class Caser {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char[] message;
char ch;
int key;
System.out.printf("输入要解密的文本: ");
message = sc.next().toCharArray();
System.out.printf("输入key: ");
key = sc.nextInt();
for(int i = 0; i < message.length; ++i){
ch = message[i];
if(ch >= 'a' && ch <= 'z'){
ch = (char) (ch - key);
if(ch < 'a'){
ch = (char) (ch + 'z' - 'a' + 1);
}
message[i] = ch;
}
else if(ch >= 'A' && ch <= 'Z'){
ch = (char) (ch - key);
if(ch < 'A'){
ch = (char) (ch + 'Z' - 'A' + 1);
}
message[i] = ch;
}
}
System.out.printf("原文: "+ String.valueOf(message));
}
}
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
文章目录