-
2021-05-24 08:08:34
实验一
一、实验名称:替代密码和置换密码的实现
二、实验目的:通过编程实现替代密码算法和置换密码算法,加深对古典密码体系的了解,为以后深入学习密码学奠定基础。
三、实验内容:
A:替代密码
1、实验原理:使用替代法进行加密,将明文中的字符用其他字符替代后形成密文。最早的替代密码是由Julius Caesar 发明的Caesar (恺撒)密码,又叫循环移位密码。它的加密过程可表示为: E(m) = (m+k ) mod n
其中,m为明文字母在字母表中的位置数;n为字母表中的字母个数;k为密钥;E(m)为密文字母在字母表中对应的位置数。
解密算法是:m = D(L) =(L-k)mod 26;
2、算法设计:使用两个函数分别进行加密和解密的过程,在主程序中通过选择加密还是解密来调用不同函数进行替代密码的加密和解密过程实现;
3、函数接口:
加密:int encrypt()
{
printf("输入明文:\n");
scanf("%s",a);
for(i=0;a[i]!='\0';i++)
{
b[i]=a[i]-64;
}
printf("输入一位密钥\n");
scanf("%d",&k);
printf("\n");
for(i=0;b[i]!='\0';i++)
{
m[i]=(b[i]+k)%26+64;
}
printf("%s",&m);
return 0;
}
解密:int decode()
{
printf("输入密文:\n");
更多相关内容 -
替代密码和置换密码地C语言实现.pdf
2020-06-23 14:41:56实用文案 实验一 一实验名称 替代密码和置换密码的实现 二实验目的 通过编程实现替代密码算法和置换密码算法加深对古典密码体系的 了解为以后深入学习密码学奠定基础 三实验内容 A 替代密码 1 实验原理使用替代法... -
页面置换六种算法c语言实现
2018-01-02 09:04:05opt、FIFO、LRU/LFU、简单clock、改进型clock等算法实现页面置换 -
替代密码和置换密码的C语言实现剖析
2021-05-24 00:42:28替代密码和置换密码的C语言实现剖析实验一一、实验名称:替代密码和置换密码的实现二、实验目的:通过编程实现替代密码算法和置换密码算法,加深对古典密码体系的了解,为以后深入学习密码学奠定基础。三、实验内容...替代密码和置换密码的C语言实现剖析
实验一
一、实验名称:替代密码和置换密码的实现
二、实验目的:通过编程实现替代密码算法和置换密码算法,加深对古典密码体系的了解,为以后深入学习密码学奠定基础。
三、实验内容:
A:替代密码
1、实验原理:使用替代法进行加密,将明文中的字符用其他字符替代后形成密文。最早的替代密码是由Julius Caesar 发明的Caesar (恺撒)密码,又叫循环移位密码。它的加密过程可表示为: E(m) = (m+k ) mod n
其中,m为明文字母在字母表中的位置数;n为字母表中的字母个数;k为密钥;E(m)为密文字母在字母表中对应的位置数。
解密算法是:m = D(L) =(L-k)mod 26;
2、算法设计:使用两个函数分别进行加密和解密的过程,在主程序中通过选择加密还是解密来调用不同函数进行替代密码的加密和解密过程实现;
3、函数接口:
加密:int encrypt()
{
printf("输入明文:\n");
scanf("%s",a);
for(i=0;a[i]!='\0';i++)
{
b[i]=a[i]-64;
}
printf("输入一位密钥\n");
scanf("%d",&k);
printf("\n");
for(i=0;b[i]!='\0';i++)
{
m[i]=(b[i]+k)%26+64;
}
printf("%s",&m);
return 0;
}
解密:int decode()
{
printf("输入密文:\n");
-
c语言编写的置换密码源代码
2010-12-13 16:19:56c语言编写的置换密码源代码 已经测试 可以运行 -
C语言置换密码
2020-09-02 18:34:22C语言置换密码 置换密码:将明文按照密钥的长度为一行排成矩阵,不足用其他字符补齐,再按密钥的顺序重新排列每一列,按竖排读出得到密文 例子: 明文:Beijing2008OlympicGames 密钥:421365 用$补齐矩阵 明文的...C语言置换密码
置换密码:将明文按照密钥的长度为一行排成矩阵,不足用其他字符补齐,再按密钥的顺序重新排列每一列,按竖排读出得到密文
例子:
明文:Beijing2008OlympicGames
密钥:421365
用$补齐矩阵
明文的矩阵:
B e i j i n
g 2 0 0 8 O
l y m p i c
G a m e s $
对密钥的解释:密钥的第一位是3,就是把明文的第3列放到密文的第一列。
密文的矩阵:
i e j B n i
0 2 0 g O 8
m y p l c i
m a e G $ s
得到的密文:
i0mme2yaj0peBglGnOc$i8is解密:
将密文如下排列:
i 0 m m
e 2 y a
j 0 p e
B g l G
n O c $
i 8 i s按密钥的顺序依次读取每一列中的每一行
密钥是421365,则先读取第一列中的第4行的B。C语言代码:
#include<stdio.h> #include<string.h> #include<stdlib.h> int main() { int len = 0, row = 0,i = 0,j=0,check=2; char plainText[2048] = { 32 }, temp[2048] = { 32 }; char key[10] = { 0 }, tempkey[10] = { 0 }; printf("输入原文:\n"); scanf("%s", &plainText); printf("原文长度:%d\n", strlen(plainText)); printf("加密:0;解密:1\n"); scanf("%d", &check); if (check == 0) { //加密,只需执行1次操作 for (i = 0; plainText[i] != '\0'; i++)temp[i] = plainText[i]; printf("输入密钥:\n"); scanf("%s",&key); len = strlen(key); if (strlen(plainText) % len == 0)row = strlen(plainText) / len; else { row = strlen(plainText) / len + 1; for (; i < row * len; i++)temp[i] = '$';//如果明文长度与矩阵不匹配则添加填充的符号 } temp[i] = '\0'; for (i = 0; i < len; i++) { tempkey[i] = key[key[i]-'0'-1]; } //这个循环是为了与下面的输出做匹配,修改了密钥的顺序 //可以直接在下面改读取明文的方法 for (i = 0; i < len; i++) { for (j = 0; j < row; j++) { printf("%c", temp[*(tempkey + i) - '1' + j * len]); } } printf("\n"); } else if(check==1){ while (1){//使用了循环,在解密时可以多次尝试不同密钥 for (i = 0; plainText[i] != '\0'; i++)temp[i] = plainText[i]; plainText[i] = '\0'; printf("输入密钥:\n"); scanf("%s",&key); row = strlen(key); len = strlen(plainText) / row;//这里不需要修改密文,因为密文在原来加密时应该的填充就已经加过了;密钥的长度应该是密文长度的因数 for (i = 0; i < len; i++) { for (j = 0; j < row; j++) { printf("%c", temp[(*(key + j)-'1')*len+i]); } } printf("\n"); } } else { printf("输入有误!\n"); return; } }
代码可能有啰嗦、不合理的地方,欢迎指出
-
基于C语言实现的两种常见页面置换算法(OPT,LRU)
2022-04-02 08:42:52根据设计要求实现对页面置换算法的模拟以及 进程状态转换的模拟。 1.根据自己输入 物理块数量,访问页面总数,要访问的页面号, 2.然后选择所需的置换算法 OPT,LRU 二选一. 计算过程,并得出 缺页次数,缺页率,... -
LRU页面置换算法C语言实现
2021-05-10 11:00:08LRU 最近最少使用页面置换算法 思路: 代码: #include<stdio.h> #include<string.h> void Change(int P[],int x,int y){//将p数组中x位置的元素挪到y位置 //我们默认传参进来的 x大于 y 也...LRU 最近最少使用页面置换算法
思路:
代码:
#include<stdio.h> #include<string.h> void Change(int P[],int x,int y){//将p数组中x位置的元素挪到y位置 //我们默认传参进来的 x大于 y 也就是默认往前挪 故不用判断x y大小关系了 int temp= P[x]; while(x!=y){ //依次后移 P[x]=P[x-1]; x--; } P[y]=temp; } int main(){ int PageNum[100]; int Count[100]; int Sum,MaxNum; memset(Count,0,sizeof(Count)); scanf("%d",&Sum);//总数 scanf("%d",&MaxNum);//内存可存放页框数量 for(int i=1;i<=17;i++) //初始化 scanf("%d",&PageNum[i]); //页面调度 int LackPage=0; int q=1,w=1; int flag=0; for(int i=1;i<=Sum;i++){ if(i==1){ //第一个必然要直接加入 Count[ PageNum[i] ]++; w++; //此时为第一个 无需考虑内存已满情况 LackPage++;//缺页次数加1 } else{ flag=0; for(int j=q;j<w;j++){ if(PageNum[j]==PageNum[i]){//如果内存中已存在该页面 flag=j;//记录该页面位置 } } if(flag!=0){ //内存中已存在该页面,需要把该页面挪到第一个位置 //ps: //若flag-q=0 说明已经是第一个位置了 就不用挪 //所以 小于0 需要挪 if( (flag-q) > 0){ Change(PageNum,flag,q); } q++;//挪完了,直接给他移出去 w++;//把新的加进来 (注意:这里不用判断内存满不满,因为根本没增加数量 Count[ PageNum[i] ]++; //该页面使用次数 +1 } else{//否则就是内存中没有该页面 LackPage++;//先把缺页次数+1 //下面开始调页 if(flag==0 && (w-q) < MaxNum){//内存中没有该页面且内存未满 Count[ PageNum[w] ]++;//使用次数加1 w++; //直接加入内存 } else{//内存中没有该页面且内存已经满了 //注意:这里才是这个算法的核心,我们要比较使用次数 flag=q;//flga用于记录使用次数最少的页面位置 //这里flag初试指向q是有意义的,不能乱改 //如果大家使用次数都一样,那么q刚好是先进来的那个 for(int j=q+1;j<w;j++){//比较次数 if(Count[ PageNum[j] ] < Count[ PageNum[flag] ] ) flag=j;//记录最小的 } if(flag==q){//说明使用次数都一样,那就选最先进来的 q++; w++; Count[ PageNum[i] ]++; //该页面使用次数 +1 } else{ Change(PageNum,flag,q);//将使用次数最少的挪到最前面 q++;//淘汰使用次数最少的 w++;//加入新的 Count[ PageNum[i] ]++; //该页面使用次数 +1 } } } } } printf("一共执行了 %d 个页面\n",Sum); printf("内存可以存放 %d 个页面\n",MaxNum); printf("一共缺页 %d 次\n",LackPage); printf("缺页率 %.3f \n",LackPage*1.0/Sum); return 0; }
-
操作系统课程设计-页面置换算法C语言
2021-05-20 10:51:20页面置换算法一.题目要求:通过实现页面置换算法的FIFO和LRU两种算法,理解进程运行时系统是怎样选择换出页面的,对于两种不同的算法各自的优缺点是哪些。要求设计主界面以灵活选择某算法,且以下算法都要实现 1) ... -
替代密码和置换密码的C语言实现
2021-05-23 02:37:28《替代密码和置换密码的C语言实现》由会员分享,可在线阅读,更多相关《替代密码和置换密码的C语言实现(13页珍藏版)》请在人人文库网上搜索。1、实验一一、实验名称:替代密码和置换密码的实现二、实验目的:通过... -
最佳(Optimal)置换算法 C语言实现
2020-12-16 00:01:20用C语言模拟一个作业的执行过程,该作业共有320条指令,即它的地址空间为32页,目前它的所有页都还未调入内存。在模拟过程中,如果所访问的指令已在内存,则显示其物理地址,并转下一条指令。如果所访问的指令还未... -
三种页面置换算法c语言代码_调度算法
2020-11-21 12:12:23前言最近,我偷偷潜伏...所以,我这边总结了操作系统的三大调度机制,分别是「进程调度/页面置换/磁盘调度算法」,供大家复习,希望大家在秋招能斩获自己心意的 offer。正文进程调度算法 进程调度算法也称 CPU 调度... -
操作系统实验-页面置换算法C语言实现
2009-05-30 10:20:02设计一个虚拟存储区和内存工作区,编程序演示下述算法的具体实现过程,并计算访问命中率: 要求设计主界面以灵活选择某算法,且以下算法都要实现 1)先进先出算法(FIFO) ...3)最佳置换算法(OPT) -
置换密码 古典密码算法
2011-11-21 23:08:48置换密码算法的原理是不改变明文字符,而是按照某一规则重新排列消息中的比特或字符顺序,才而实现明文信息的加密。置换密码有时又称为换位密码。 矩阵换位法是实现置换密码的一种常用方法。它将明文中的字母按照... -
密码学
2021-05-26 02:44:57实验一 古典密码算法实验一、实验目的(1)掌握密码学基础知识,包括明文、密文、密钥、加密和...二、实验内容编程实现移位密码、维吉尼亚密码、周期置换密码、列置换密码算法,分别用这些加密算法对文本数据进行加... -
先进先出(FIFO)页面置换算法C语言实现、最近最久未使用(LRU)页面置换算法C语言实现
2021-12-17 20:29:45页面置换算法C语言实现(先进先出FIFO、最近最久未使用LRU C语言实现) -
操作系统页面置换算法之最佳(OPT)置换算法(C语言实现)
2020-12-09 22:12:35最佳(OPT)置换算法 #include <iostream> int accessPage[20] = { 7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1 }; int flagOPT[3] = { -1,-1,-1 }; // 用来在OPT算法中标记三个物理块是否有页面;-1:物理... -
128位AES加密算法C语言实现
2020-11-26 23:30:14用C语言实现的128位AES加密算法,可以运行在JAVA的JNI 中AIS加密算法c语言实现代码 nt cnt for(ent =0: cnt< 8: cnt++) BvtcToBit(*(ch+cnt), bit+(ent<<3)) return /将二进制位串转为长度为8的字符串水 ... -
C语言实现页面置换算法
2021-05-20 10:50:47本文实例为大家分享了C语言实现页面置换算法的具体代码,供大家参考,具体内容如下操作系统实验页面置换算法(FIFO、LRU、OPT)概念:1.最佳置换算法(OPT)(理想置换算法):从主存中移出永远不再需要的页面;如无这样的... -
计算机操作系统实验之页面置换算法(C语言)
2019-12-08 17:25:19在进程运行过程中,如果它需要访问的页面不在内存,需要把它调入内存,但是内存已满时,需要把内存中的某页数据送到磁盘的对换区中。而选择哪个页面,则由固定的算法来决定,称为页面置换算法 -
替代密码及置换密码地C语言实现.docx
2020-11-30 12:50:15实用文案 实验一 一实验名称 替代密码和置换密码的实现 二实验目的 通过编程实现替代密码算法和置换密码算法加深对古典密码体系的 了解为以后深入学习密码学奠定基础 三实验内容 替代密码 实验原理使用替代法进行... -
置换算法C语言实现
2012-12-05 11:21:58置换算法C语言实现 -
替代密码和置换密码地C语言实现.docx
2020-11-06 11:41:35实用文案 实验一 一实验名称 替代密码和置换密码的实现 二实验目的 通过编程实现替代密码算法和置换密码算法加深对古典密码体系的 了解为以后深入学习密码学奠定基础 三实验内容 A替代密码 1实验原理使用替代法进行... -
先进先出(FIFO)页面置换算法 C语言实现
2020-12-15 23:54:16用C语言模拟一个作业的执行过程,该作业共有320条指令,即它的地址空间为32页,目前它的所有页都还未调入内存。在模拟过程中,如果所访问的指令已在内存,则显示其物理地址,并转下一条指令。如果所访问的指令还未... -
【操作系统置换算法】OS实验C语言代码实现FIFO/OPT/LRU
2021-11-12 16:23:24该C语言代码实现了操作系统os实验中的三种页面置换算法: 最佳置换算法(OPT)、先进先出算法(FIFO)、最近最久未使用算法(LRU) 输入:物理块和页面大小,可选择自行输入数据或程序随机生成页面号序列 输出:显示三种... -
c语言实现置换密码.doc
2021-05-20 10:12:36c语言实现置换密码//单置换密码的编程实现(C++)//作者信息:////本程序使用方法:需要在本程序所在的文件夹创建一个"密码学.txt"文档,//该程序所需要的数据全部由该文档提供,然后运行即可得到结果,如需要修改数据... -
操作系统:分页管理系统页面置换算法设计与实现
2022-01-11 12:17:37一个请求分页管理系统,按字节编址,逻辑地址及物理地址的有效位均为32位(二进制),页面大小为4KB。假设一次内存访问时间为100ns,处理一次缺页的平均时间105 ns(已含更新页表的时间,缺页中断中不更新快表)。 -
Linux页面置换算法的C语言实现
2021-05-12 06:15:44Linux页面置换算法的C语言实现编写算法,实现页面置换算法FIFO、LRU、OPT;针对内存地址引用串,进行页面置换算法进行页面置换。其中,算法所需的各种参数由输入产生(手工输入或者随机数产生);输出内存驻留的页面... -
C语言实现操作系统页面置换算法--大作业版(附代码)
2021-12-25 16:16:10无论是采用什么页面置换算法,都要经过下面的判断 b.页面不在内存中,但是此时内存还未满,那就将页面存到内存中,然后输出,缺页次数++ c.页面不在内存中,且此时内存已满,需要把页面置换,缺页次数++,置换次数++ ...