在单表置换密码中,密钥是由字母与空格组成的 如shana

在没有密钥作用前,置换表如下

a

b

c

d

e

f

g

h

i

j

k

l

m

n

o

p

q

r

s

t

u

v

w

x

y

z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

在密钥的作用下,置换表将发生变化,具体如下

将密钥填入置换表,如果遇到重复的字符则忽略,接着按原表顺序填充,忽略重复字符,如下表

a

b

c

d

e

f

g

h

i

j

k

l

m

n

o

p

q

r

s

t

u

v

w

x

y

z

S

H

A

N

B

C

D

E

F

G

I

J

K

L

M

O

P

Q

R

T

U

V

W

X

Y

Z

首先将SHAN填入表中,因为A已经在前面出现,所以忽略,接着将除去S H A N四个字符的字母表按顺序填充

具体C语言代码实现如下,这个代码个人感觉写的不够简洁,以后有机会再修改

思路就是读取密钥后填充进空的置换表,然后 再把原字符表填充到置换表中构成密码表

#include

#include

int main()

{

//置换表

char List[27] = { 0 };

//字母表

char Alpha[26] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };

//密钥

char Key[101] = { 0 };

//明文

char Message[101] = { 0 };

//密文

char CipherText[101] = { 0 };

int Num = 0;

//获取密钥

printf("请输入密钥(100字符以内): ");

gets(Key);

//构造置换表

for (int i = 0; Key[i]; ++i)

{

if (Key[i] == ' ')

continue;

for (int j = 0; j < 26; ++j)

{

if (Alpha[j] == Key[i])

{

Alpha[j] = 0;

List[Num++] = Key[i];

}

}

}

for (int i = 0; i < 26; ++i)

{

if (!Alpha[i])

continue;

List[Num++] = Alpha[i];

}

//获取明文

printf("请输入明文(100字符以内): ");

gets(Message);

//加密

for (int i = 0; Message[i]; ++i)

{

if (Message[i] == ' ')

CipherText[i] = ' ';

else

CipherText[i] = List[Message[i] - 'a'];

}

//打印密文

printf("加密后密文: %s\n", CipherText);

system("PAUSE");

return 0;

}

单表置换加密matlab,单表置换密码相关推荐

  1. 单自由度振动系统 matlab,单自由度系统的振动及matlab分析

    <单自由度系统的振动及matlab分析>由会员分享,可在线阅读,更多相关<单自由度系统的振动及matlab分析(6页珍藏版)>请在金锄头文库上搜索. 1.单自由度系统的振动及 ...

  2. 直扩 单音干扰抑制 matlab,单频干扰在直扩系统中的误码性能分析

    收稿日期 :2004 - 05 - 08 收修改稿日期 :2004 - 07 - 28 单频干扰在直扩系统中的误码性能分析 许 靖 谷春燕 易克初 (西安电子科技大学综合业务网国家重点实验室 ,西安 ...

  3. 单应性矩阵 matlab,单应性矩阵MATLAB程序

    单应性(Homography)描述的是同一个平面上的点,在两幅视图上的像点之间存在一一对应的映射关系,本质上是将一个目标点在两幅图像中相互转移.对应关系如图所示. 本文计算单应性矩阵在两个图像平面中都 ...

  4. mysql5.7.16 表空间加密_技术分享 | InnoDB 表空间加密

    本文目录: 一.表空间加密概述 应⽤场景 加密插件 加密限制 注意事项 二.加密表空间 安装加密插件 配置表空间加密 查看表空间被加密的表 三.更新 master encryption key 四.导 ...

  5. 怎么实现Web系统URL传输(表单提交)参数加密-zhuan

    using System; using System.Security.Cryptography; using System.IO; using System.Text; namespace EIP. ...

  6. laravel基础课程---14、表单验证(lavarel如何进行表单验证)

    laravel基础课程---14.表单验证(lavarel如何进行表单验证) 一.总结 一句话总结: lavarel的验证的功能比tp要[简单]且[强大]很多 直接控制器中:添加[规则数组]和[修改提 ...

  7. java怎么防止表单重复提交_如何防止表单重复提交

    在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...

  8. js入门·表单详解一(修改表单属性,修改表单元素值)

    实在javascript入门·Document对象入门讲解(访问表单,创建新页,获取页标题) 一文中,我们已经把表单的一些基本访问等弄清楚了,下面我们深入的学下表单的属性以及对表单元素的简单操作! 演 ...

  9. ajax注册表单用户名实时验证,Ajax注册表单用户名实时验证..doc

    Ajax注册表单用户名实时验证. Ajax注册表单用户名实时验证 1.1.1 摘要 很多时候在网站上注册时,我们会发现,注册表单通常需要检查用户名和电子邮件地址的可用性:从而确保用户之间不拥有相同的用 ...

  10. access表怎么生成表结构_数据结构——单链表讲解

    单链表 单链表的创建分为头插入法和尾插入法两种,两者并无本质上的不同,都是利用指针指向下一个结点元素的方式进行逐个创建,只不过使用头插入法最终得到的结果是逆序的. 1.单链表概念&设计 单链表 ...

最新文章

  1. 国内优秀Android学习资源汇总全集
  2. STM32F4 HAL库开发 -- 独立看门狗(IWDG)
  3. 组合数(Lucas定理) + 快速幂 --- HDU 5226 Tom and matrix
  4. 《动手学深度学习》 第二天 (线性回归)
  5. cpu使用率_线程CPU使用率到底该如何计算?
  6. 文件操作--设置文件属性、获取文件属性
  7. Android开发指南(41) —— Searchable Configuration
  8. java数字后面加f_java 数字后面 f 和 l
  9. 祝学校计算机系的新年贺词,[学校班级新年祝福语]班级新年贺词
  10. Unity2 学习 制作和动态加载预制体
  11. vue启动项目报错 `webpack-dev-server --inline --progress --config build/webpack.dev.conf
  12. 【Unity3D插件】VOXL插件分享《多人沙盒游戏插件》
  13. Enterprise Architect(EA)画UML之用例图,敲详细讲解+实战举例
  14. 2022年10款好用免费数据恢复软件分享
  15. [光劍藏書館2020] 孔夫子旧书网
  16. CSS入门教程——HTML选择器
  17. php wps导入数据库,wps excel表格怎么导入数据库-如何把excel表格导入wps
  18. linux python2.7安装pymysql
  19. Mac环境下安装MongoDB数据库
  20. 拉勾 python_python 登录拉钩

热门文章

  1. 用VB评估数学表达式
  2. bin文件用cad打开_怎么快速打开CAD图纸?
  3. C语言-书籍资料汇总
  4. 再谈过时且脆弱的TCP长肥管道三宗罪!
  5. ctc系统通信前置服务器,CTC系统包括哪些接口服务器?
  6. php多张图片下载(zip压缩)
  7. java编程题代做,代做COMP 2406作业、代写Java语言作业、代做programming作业、代写Java程序实验作业...
  8. python脚本 游戏赚金币_Python实现王者荣耀刷金币脚本功能
  9. 【计算机网络】实验一 Protocol Layer
  10. 怎样找计算机物理地址,怎么查询电脑物理地址