【离散数学】密码学

古典密码学

已知最早使用密码学的人之一是尤利乌斯 凯撒,他通过将字母表中的字母向后平移三个单位长度来实现加密(模26的平移),我们使用数学语言描述如下。

我们使用一个枚举类型0-25来代表26个字母,使用符号Z表示,定义一个函数f,定义域为非负整数p,我们有

f(p) = (p+3) mod 26

相对地,解密的过程就是将字母向前平移三个单位实现,同样是模26计算

f^(-1)(p) = (p-3) mod 26

同理,我们在加密和解密过程中可以规定任意的平移长度,令平移长度为k,则得到

f(p) = (p+k) mod 26

f^(-1)(p) = (p-k) mod 26

下面使用c语言来描述这个加密解密过程。我们令平移长度k=3,将"HELLO"进行加密和解密

#include <stdio.h>
#include <stdlib.h>

#define MAXSIZE 10

//加密函数,返回 加密后的字符串 
//注意,因为是字符是ASCII码值,所以我们在加密过程中需要进行一定的变化 
char *encryption(char *str, int k, int length){
	char *encoding;
	for(int i=0; i<length; i++){
		if(str[i]>=65 && str[i]<=90){
			//大写字母
			encoding[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值