freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

C 和 Java 中的凯撒密码
2022-04-29 12:14:48
所属地 江西省

什么是凯撒密码?

它是最简单的加密技术之一,其中纯文本中的每个字符都被一个字符替换为某个固定位置的字符。

例如,如果 key 为 3,那么我们必须将字符替换为向下 3 位的另一个字符。就像A将被D替换,C将被F替换等等

对于解密,只需按照加密过程的逆向操作。
image

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
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录