密码学——凯撒密码


前言

本内容为博主学习凯撒密码的笔记,如有错误,烦请指正。


一、凯撒密码简介

凯撒密码是最早的代换密码,使用单表代换。其基本思想是:通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推X将变成A,Y变成B,Z变成C。位数就是凯撒密码加密和解密的密钥。
例子如下:
凯撒密码

二、凯撒密码算法

1.加密算法

对于某一明文字母m来说,假设其ASCII码为x,往后移了i位,则新得到的密文c的ASCII码为x + i,考虑加密为26个字母周期性加密,则需将ASCII码对26取模,举例小写字母如下:

c = (m - 'a' + i) % 26 + 'a';

2.解密算法

同理,解密算法也是一个意思,对于某一密文字母m来说,假设其ASCII码为x,往前移了i位,则新得到的密文c的ASCII码为x - i,考虑加密为26个字母周期性加密,则需将ASCII码对26取模,再考虑到且(x-i)可能为负数,取’z’进行计算,举例小写字母如下:

m = (c - 'z' - i) % 26 + 'z';

三、代码实现

下面代码实现对移位为i的凯撒密码加密算法,只对字母有效,区分大小写。

#include <stdio.h>

void main(){
   
	char plaintext[100],ciphertext[100];
	char m;
	int i,k,j=0;
	while(1)
	{
   
		printf(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

渣渣黑呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值