精华内容
下载资源
问答
  • 这是列置换加密的c程序,有关密码学的加解密
  • 《替代密码和置换密码C语言实现》由会员分享,可在线阅读,更多相关《替代密码和置换密码C语言实现(13页珍藏版)》请在人人文库网上搜索。1、实验一一、实验名称:替代密码和置换密码的实现二、实验目的:通过...

    《替代密码和置换密码的C语言实现》由会员分享,可在线阅读,更多相关《替代密码和置换密码的C语言实现(13页珍藏版)》请在人人文库网上搜索。

    1、实验一一、实验名称:替代密码和置换密码的实现二、实验目的:通过编程实现替代密码算法和置换密码算法,加深对古典密码体系的了解,为以后深入学习密码学奠定基础。三、实验内容:A:替代密码1、实验原理:使用替代法进行加密,将明文中的字符用其他字符替代后形成密文。最早的替代密码是由Julius Caesar 发明的Caesar (恺撒)密码,又叫循环移位密码。它的加密过程可表示为: E(m) = (m+k ) mod n其中,m为明文字母在字母表中的位置数;n为字母表中的字母个数;k为密钥;E(m)为密文字母在字母表中对应的位置数。解密算法是:m = D(L) =(L-k)mod 26;2、算法设计:使。

    2、用两个函数分别进行加密和解密的过程,在主程序中通过选择加密还是解密来调用不同函数进行替代密码的加密和解密过程实现;3、函数接口:加密:int encrypt()printf(输入明文:n);scanf(%s,a);for(i=0;ai!=0;i+)bi=ai-64;printf(输入一位密钥n);scanf(%d,&k);printf(n);for(i=0;bi!=0;i+)mi=(bi+k)%26+64;printf(%s,&m);return 0;解密:int decode()printf(输入密文:n);scanf(%s,a);for(i=0;ai!=0;i+)bi=ai-64;prin。

    3、tf(输入一位密钥n);scanf(%d,&k);printf(n);for(i=0;bi!=0;i+)ni=(bi-k)%26+64;printf(%s,n);return 0;4、 程序流程图:5、 测试结果截图:加密:解密:B:1、 实验原理:不改变明文字符,但是把字符在明文中的排列顺序改变,来实现明文信息的加密。置换密码也被称为换位密码。本次实验使用的是矩阵换位法,是将明文中的字母按照给定的顺序安排在一个矩阵中,然后又根据密钥提供的顺序重新组合矩阵中的字母,从而形成密文。解密过程是根据密钥的字母数作为列数,将密文按照列、行的顺序写出,再根据由密钥给出的矩阵置换产生新的矩阵恢复正常顺序,。

    4、从而恢复明文。2、算法设计:通过选择加密或解密,使用置换矩阵顺序和恢复矩阵顺序的两个函数,分别在主函数中进行调用来实现置换密码的加密解密实现;3、函数接口:加密:int jiami()int i = 0, j = 0, key_len = 0, text_len = 0, row = 0;char keyLENGTH = 0 ;char numberLENGTH = 0 ;char ptextLENGTH * 10 = 0 ;char ctextLENGTH * 10 = 0 ;printf(输入明文:n);scanf(%s, ptext);i = 0;while (ptexti != 0)t。

    5、ext_len+;i+;printf(输入密钥:n);scanf(%s, key);i = 0;while (keyi != 0)key_len+;i+;for (i = 0; i#include #includeint k,i=0;char a100;char b100,m100,n100;int encrypt()printf(输入明文:n);scanf(%s,a);for(i=0;ai!=0;i+)bi=ai-64;printf(输入一位密钥n);scanf(%d,&k);printf(n);for(i=0;bi!=0;i+)mi=(bi+k)%26+64;printf(%s,&m);r。

    6、eturn 0;int decode()printf(输入密文:n);scanf(%s,a);for(i=0;ai!=0;i+)bi=ai-64;printf(输入一位密钥n);scanf(%d,&k);printf(n);for(i=0;bi!=0;i+)ni=(bi-k)%26+64;printf(%s,n);return 0;int main()int c;printf(加密选择1,解密选择2 n);scanf(%d,&c);if(c=1)encrypt();if(c=2)decode();return 0;B、置换密码:#include #include #define LENGTH 。

    7、26int jiami()int i = 0, j = 0, key_len = 0, text_len = 0, row = 0;char keyLENGTH = 0 ;char numberLENGTH = 0 ;char ptextLENGTH * 10 = 0 ;char ctextLENGTH * 10 = 0 ;printf(输入明文:n);scanf(%s, ptext);i = 0;while (ptexti != 0)text_len+;i+;printf(输入密钥:n);scanf(%s, key);i = 0;while (keyi != 0)key_len+;i+;fo。

    8、r (i = 0; ikey_len; i+)numberi = 0;for (j = 0; jkey_len; j+)if (keyjkeyi)numberi+;for (i = 0; ikey_len; i+)for (j = i + 1; jkey_len; j+)if (keyj = keyi)numberj+;if (text_len%key_len = 0)row = text_len / key_len;elserow = text_len / key_len + 1;for (i = 0; ikey_len; i+)for (j = 0; jrow; j+)ctexti*row。

    9、 + j = ptextnumberi + key_len*j;for (i = 0; ikey_len; i+)for (j = 0; jrow; j+)printf(%c, ctexti*row + j);return 0;int jiemi()int i = 0, j = 0, key_len = 0, text_len = 0, row = 0; char key1LENGTH = 0 ;char ptext1LENGTH * 10 = 0 ;char ctext1LENGTH * 10 = 0 ;char number1LENGTH = 0 ;printf(输入密文:n);scanf。

    10、(%s, ctext1);while (ctext1i != 0)text_len+;i+;printf(输入密钥);scanf(%s, key1);i = 0;while (key1i != 0)key_len+;i+;for (i = 0; ikey_len; i+)int j = 0;number1i = 0;for (j = 0; jkey_len; j+)if (key1jkey1i)number1i+;for (i = 0; ikey_len; i+)int j = 0;for (j = i + 1; jkey_len; j+)if (key1j = key1i)number1j+。

    11、;if (text_len%key_len = 0)row = text_len / key_len;elserow = text_len / key_len + 1;for (i = 0; ikey_len; i+)for (j = 0; jrow; j+)ptext1number1i + key_len*j = ctext1i*row + j;for (i = 0; ikey_len; i+)for (j = 0; jrow; j+)printf(%c, ptext1i*row + j);return 0;int main()int a;printf(加密选择1,解密选择2);scanf(%d, &a);if (a = 1)jiami();else if (a = 2)jiemi();return 0。

    展开全文
  • 实用文案 实验一 一实验名称 替代密码和置换密码的实现 二实验目的 通过编程实现替代密码算法和置换密码算法加深对古典密码体系的 了解为以后深入学习密码学奠定基础 三实验内容 A 替代密码 1 实验原理使用替代法...
  • c语言实现的古典密码算法列置换的演示程序。
  • C语言置换密码

    千次阅读 2020-09-02 18:34:22
    C语言置换密码 置换密码:将明文按照密钥的长度为一行排成矩阵,不足用其他字符补齐,再按密钥的顺序重新排列每一,按竖排读出得到密文 例子: 明文: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;
    	}
    }	
    

    代码可能有啰嗦、不合理的地方,欢迎指出

    展开全文
  • 实验一一、实验名称:替代密码和置换密码的实现二、实验目的:通过编程实现替代密码算法和置换密码算法,加深对古典密码体系的了解,为以后深入学习密码学奠定基础。三、实验内容:A:替代密码1、实验原理:使用替代...

    实验一

    一、实验名称:替代密码和置换密码的实现

    二、实验目的:通过编程实现替代密码算法和置换密码算法,加深对古典密码体系的了解,为以后深入学习密码学奠定基础。

    三、实验内容:

    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:56
    c语言编写的置换密码源代码 已经测试 可以运行
  • c语言实现置换密码//单置换密码的编程实现(C++)//作者信息:////本程序使用方法:需要在本程序所在的文件夹创建一个"密码学.txt"文档,//该程序所需要的数据全部由该文档提供,然后运行即可得到结果,如需要修改数据...

    c语言实现置换密码

    //单置换密码的编程实现(C++)

    //作者信息:

    //

    //本程序使用方法:需要在本程序所在的文件夹创建一个"密码学.txt"文档,

    //该程序所需要的数据全部由该文档提供,然后运行即可得到结果,如需要修改数据,必须从文档中人工修改

    //文档格式的要求:文档总共包含两行。第一行由一个1或2的数字和一个字符串组成,数字1代表加密,2代表解密,字符串表示密钥

    //第二行仅包含一个字符串,这个字符串是需要加密或解密的内容。

    //该程序运行结果直接由控制台输出

    运行结果:

    #include

    #include

    #include

    using namespace std;

    ifstream in("密码学.txt");

    void JiaMi(char ZhiHuan[]); //加密函数

    void JieMi(char ZhiHuan[]); //解密函数

    void setZhiHuan(char ZhiHuan[],char fanZhiHuanBiao[]); //设置置换表函数

    int main()

    {

    int m; //确定是加密或解密?加密为1,解密为2

    char ZhiHuanBiao['z'+1]; //正向置换表,加密时用

    char fanZhiHuanBiao['Z'+1]; //反向置换表,解密时用

    cout<

    in>>m; //读入m

    setZhiHuan(ZhiHuanBiao, fanZhiHuanBiao); //设置置换表

    switch(m) //判断m值,执行相应的功能

    {

    case 1: JiaMi(ZhiHuanBiao);break;

    case 2: JieMi(fanZhiHuanBiao);break;

    default:break;

    }

    return 0;

    }

    void JiaMi(char ZhiHuan[]) //加密

    {

    string MingWen; //保存明文

    cout<

    getline(in,MingWen); //读入明文

    cout<

    cout<

    for(int i=0; i

    {

    if(MingWen[i]>='a' && MingWen[i]<='z')

    cout<

    else cout<

    }

    cout<

    }

    void JieMi(char fanZhiHuan[])

    {

    string MiWen; //保存密文

    cout<

    getline(in,MiWen); //读入密文

    cout<

    cout<

    for(int i=0; i

    {

    if(MiWen[i]>='A' && MiWen[i]<='Z')

    cout<

    else cout<

    }

    cout<

    }

    void setZhiHuan(char Zhi

    展开全文
  • 置换密码代码简单实现(C语言

    万次阅读 热门讨论 2018-09-06 19:42:10
    置换密码的特点是仅有一个发送方和接受方知道的加密置换(用于加密)及对应的逆置换(用于解密)。它是对明文L长字母组中的字母位置进行重新排列,而每个字母本身并不改变。 代码实现: #include&lt;stdio....
  • 列置换密码

    千次阅读 2020-04-17 03:12:11
    列置换密码 参考教材:《现代密码学教程》P46 3.1.1 过程 加密过程 将明文p以设定的固定分组宽度m按行写出,即每行有m个字符;若明文长度不是m的整数倍,则不足部分用双方约定的方式填充,如双方约定用空格代替空缺处...
  • 整理实验一一、实验名称:替代密码和置换密码的实现二、实验目的:通过编程实现替代密码算法和置换密码算法,加深对古典密码体系的了解,为以后深入学习密码学奠定基础。三、实验内容:A:替代密码1、实验原理:使用...
  • 置换密码的c++实现程序

    热门讨论 2011-03-26 15:00:01
    古典密码体系中最基本的一种密码机制,使用c++设计完成
  • 《替代密码和置换密码C语言实现》由会员分享,可在线阅读,更多相关《替代密码和置换密码C语言实现(13页珍藏版)》请在人人文库网上搜索。1、实验一一、实验名称:替代密码和置换密码的实现二、实验目的:通过...
  • 密码

    2021-05-26 02:44:57
    (3)掌握移位密码、维吉尼亚密码、周期置换密码、列置换密码的基本原理。(4)熟悉编程环境,掌握古典密码算法的编程实现方法。二、实验内容编程实现移位密码、维吉尼亚密码、周期置换密码、列置换密码算法,分别用这些...
  • 凯撒密码/列置换密码

    千次阅读 2019-09-13 00:45:33
    设Bob 给Alice 发送了frgh 和cuerippnori$ottknlmrwpce 两段密文。 其中第一段密文为密钥k=3( 字符集为26...第二段密文是采用了第一段密文的明文作为加密密钥的列置换密码( 填充字符为$) 。 试求: (1) 第一段密文...
  • 用C++实现置换密码的加密解密算法,此文档为代码实现
  • WORD完美格式技术资料 专业整理实验一一、实验名称:替代密码和置换密码的实现二、实验目的:通过编程实现替代密码算法和置换密码算法,加深对古典密码体系的了解,为以后深入学习密码学奠定基础。三、实验内容:A:...
  • 用C++实现置换密码的加密解密算法

    热门讨论 2012-04-09 20:52:37
    用C++实现置换密码的加密解密算法,此文档为实现代码
  • C语言双重置换加密

    千次阅读 2016-11-25 17:30:25
    密钥:置换规则:(1,2,3,4,5,6,7,8)->(2,3,4,5,6,7,8,1)进行行置换,(1,2,3,4,5,6,7,8)->(3,4,5,6,7,8,1,2)进行列置换。#include #include int main(){ char yw[3][50] = {"大风起兮云飞扬,", "威加海内兮
  • 古典密码实验报告.doc

    2021-05-26 02:45:57
    古典密码算法班 级:学 号:姓 名:实 验 时 间: 2014年4月成 绩:指 导 教 师:实验室名称:哈尔滨工程大学实验室与资产管理处 制一、实验名称 古典密码算法实验目的通过编程实现经典的代替密码算法和置换密码,...
  • 周期置换密码

    千次阅读 2020-04-17 11:04:01
    周期置换密码 参考教材:《现代密码学教程》P47 3.1.2 加密解密过程 周期置换密码是将明文p串按固定长度m分组.然后对每组中的子串按1,2…,m的某个置换...和上次提及的列置换密码类似 代码 import re class tim...
  • /*用来保存密码*/ if(argc!=4){/*容错处理*/ printf("\nIn-fname:\n"); gets(in_fname);/*得到要加密的文件名*/ printf("Password:\n"); gets(pwd);/*得到密码*/ printf("Out-file:\n"); gets(out_fname);/*得到加密...
  • 凯撒密码解密加密(C语言

    千次阅读 2020-12-05 15:28:47
    C语言实现凯撒解密加密 #include <stdio.h> #include <string.h> int main() { printf("请输入加密(jia)or解密(jie):"); char a[1000]; int flag=0; gets(a); if(a[2]=='e') { printf("请...
  • 单表置换密码

    2021-04-27 01:47:01
    在单表置换密码中,密钥是由字母与空格组成的 如shana在没有密钥作用前,置换表如下abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ在密钥的作用下,置换表将发生变化,具体如下将密钥填入置换表,如果遇到...
  • 古典密码——置换密码

    万次阅读 2017-10-04 22:28:10
    简介置换密码是一种通过一定规则改变字符串中字符的顺序从而实现加密的密码算法。常见的是将明文字符串按照n个一行形成矩阵,然后再按读出,矩阵的数(n)和按读出的顺序便是密钥。
  • playfair密码 C语言实现

    千次阅读 多人点赞 2017-03-17 16:50:52
    这个学期学校开了应用密码学的课,老师布置的一个作业就是挑选一种置换或者代换密码然后用C语言实现。刚开始拿到组长分配的任务,觉得playfair很简单,完全可以一个小时搞定,可是真正动手去写,才发现这个算法的...
  • 实验项目1 置换密码

    2021-05-30 15:57:21
    实验一 置换密码 一、实验目的: 通过编程实现置换密码算法,加深对古典密码体系的了解,为以后深入学习密码学奠定基础。 二、实验内容: 实验原理: 不改变明文字符,但是把字符在明文中的排列顺序改变,来...
  • 古典密码学上机实验

    2021-05-20 10:48:40
    实验一、传统密码算法一、实验目的及任务通过编程实现替代密码算法和置换密码算法,加深对古典密码体制的了解,为深入学习密码学奠定基础二、实验环境运行Windows操作系统的PC机,具有C语言编译环境。三、实验原理...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 917
精华内容 366
关键字:

列置换密码c语言

c语言 订阅