置换密码程序设计

news2024/12/24 14:24:54

实验目的与要求

1. 帮助学生掌握置换密码的加密解密过程,能够利用所学过的编程语言,实现加解密算法。使学生掌握编程实现实际问题中的方法,提高专业技能和专业素养。

2. 要求学生掌握算法的程序实现的方法,能应用密码算法的特点,设计合适的交互界面,并能正确实现应用编程。

实验原理与内容

置换密码加密解密过程

设明文为:4D 61 65 53 2D 4F 69 20 4E。密钥为10,8,1,6,3,0,11,5,7,17,4,12,13,14,9,15,2,16。求加密后的16进制密文。

解 先思考和描述算法,也就是对明文4D 61 65 53 2D 4F 69 20 4E实现置换10,8,1,6,3,0,11,5,7,17,4,12,13,14,9,15,2,16。通过对数组赋值实现:

m(i)={4D 61 65 53 2D 4F 69 20 4E},i=1,2,3,…,9。

    k(i)={ 10,8,1,6,3,0,11,5,7,17,4,12,13,14,9,15,2,16},i=0,1,2,3,…,17。

c(i)=m(k(i)), i=0,1,2,3,…,17。

c(0),c(1),…,c(17)为密文。

密文序列为: 。

这样可以推广到任意置换。有这个思维才可以编程实现,因此,思想方法更重要。

幻方密码加密解密过程(即置换密码的解密)

……

实验内容及拓展

实验原理已包含实验内容,下面所说的只是拓展实验内容实现的难点:

1. 设计交互图形界面;

2. 字符的转换

3. 文件的读取。

实验步骤

实现置换密码加解密过程

实验注意事项

遇到问题可以通过互联网查询方法或者插入断点进行调试

实验设备与软件环境

 PC Windows环境

实验过程与结果

1.1原理解析

置换密码算法的原理是不改变明文字符,只将字符在明文中的排列顺序改变,从而实现明文信息的加密。置换密码也叫换位密码。

试编程实现矩阵换位密码。它的加密方法是将明文中的字母按照给定的顺序安排在一个矩阵中,然后用根据密钥提供的顺序重新组合矩阵中的字母,形成密文。例如,明文为attack begins at five,密钥为acbdfe

1.2加密过程

将明文按照每行6个字母的形式排在矩阵中,如下形式:

['a', 't', 't', 'a', 'c', 'k']

['b', 'e', 'g', 'i', 'n', 's']

['a', 't', 'f', 'i', 'v', 'e']

根据密钥acbdfe可用得到各字母在字母表中的先后出现顺序132465

根据上面的置换,将原有矩阵中的字母按照第132465的顺序排列,则有下列形式:

['a', 't', 't', 'a', 'k', 'c']

['b', 'g', 'e', 'i', 's', 'n']

['a', 'f', 't', 'i', 'e', 'v']

1.3解密过程

将密文按照每行6个字母的形式排在矩阵中,如下形式:

['a', 't', 't', 'a', 'k', 'c']

['b', 'g', 'e', 'i', 's', 'n']

['a', 'f', 't', 'i', 'e', 'v']

根据密钥acbdfe可用得到各字母在字母表中的先后出现顺序132465

根据上面的置换,将原有矩阵中的字母还原,则有下列形式:

['a', 't', 't', 'a', 'c', 'k']

['b', 'e', 'g', 'i', 'n', 's']

['a', 't', 'f', 'i', 'v', 'e']

2.1代码解析

处理密钥获取密钥的长度及顺序

加密

解密

主函数

3.1运行结果展示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2264768.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android修行手册 - 移动端几种常用动画方案对比

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分…

【计算机视觉基础CV-图像分类】03-深度学习图像分类实战:鲜花数据集加载与预处理详解

本文将深入介绍鲜花分类数据集的加载与处理方式,同时详细解释代码的每一步骤并给出更丰富的实践建议和拓展思路。以实用为导向,为读者提供从数据组织、预处理、加载到可视化展示的完整过程,并为后续模型训练打下基础。 前言 在计算机视觉的深…

Windows查看MD5

如何在Windows,查看一个文件的MD5 1、ctrlr,输入cmd 2、执行命令certutil -hashfile 文件路径(按住将文件拖进来就行) MD5 3、执行命令certutil -hashfile 文件路径(按住将文件拖进来就行)SHA1 可查看SHA…

【优化算法】莲花效应优化算法(LEA):一种基于莲花自然启发的工程设计优化算法

目录 1.摘要2.算法原理3.结果展示4.参考文献5.代码获取 1.摘要 本文提出了一种新的进化算法——莲花效应算法(LEA),该算法结合了蜻蜓算法中的高效操作算子,例如蜻蜓在花朵授粉中的运动方式用于探索,以及水在花叶上的自…

Next.js v15 - 服务器操作以及调用原理

约定 服务器操作是在服务器上执行的异步函数。它们可以在服务器组件和客户端组件中调用,用于处理 Next.js 应用程序中的表单提交和数据修改。 服务器操作可以通过 React 的 “use server” 指令定义。你可以将该指令放在 async 函数的顶部以将该函数标记为服务器操…

DataV的安装与使用(Vue3版本)

1、DataV(vue3)地址:DataV Vue3TSVite版 | DataV - Vue3 2、使用 npm install kjgl77/datav-vue3 安装 3、全局引入。 4、此时就可以按需使用了~

隐藏指定文件/文件夹和自动提示功能消失解决方案

一. 隐藏指定文件/文件夹 Idea中隐藏指定文件或指定类型文件 Setting → File Types → Ignored Files and Folders输入要隐藏的文件名,支持*号通配符回车确认添加 二. 自动提示功能消失解决方案 指定SpringBoot配置文件 File → Project Structure → Facets选…

Echarts连接数据库,实时绘制图表详解

文章目录 Echarts连接数据库,实时绘制图表详解一、引言二、步骤一:环境准备与数据库连接1、环境搭建2、数据库连接 三、步骤二:数据获取与处理1、查询数据库2、数据处理 四、步骤三:ECharts图表配置与渲染1、配置ECharts选项2、动…

Springboot应用开发:配置类整理

目录 编写目的 一、线程池 1.1 setCorePoolSize 1.2 setMaxPoolSize 1.3 setQueueCapacity 1.4 setKeepAliveSeconds 1.5 setThreadNamePrefix 1.6 setRejectedExecutionHandler 1.7 示例代码 二、Durid数据库连接池 2.1 ServletRegistrationBean 2.2 FilterRegist…

AI新书推荐:深度学习和大模型原理与实践(清华社)

本书简介 在这个信息爆炸、技术革新日新月异的时代,深度学习作为人工智能领域的重要分支,正引领着新一轮的技术革命。《深度学习和大模型原理与实践》一书,旨在为读者提供深度学习及其大模型技术的全面知识和实践应用的指南。 本书特色在于…

java如何使用poi-tl在word模板里渲染多张图片

1、poi-tl官网地址 http://deepoove.com/poi-tl/ 2、引入poi-tl的依赖 <dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.12.1</version></dependency>3、定义word模板 释义&#xf…

电力通信规约-104实战

电力通信规约-104实战 概述 104规约在广泛应用于电力系统远动过程中&#xff0c;主要用来进行数据传输和转发&#xff0c;本文将结合实际开发实例来讲解104规约的真实使用情况。 实例讲解 因为个人技术栈是Java&#xff0c;所以本篇将采用Java实例来进行讲解。首先我们搭建一…

linux socket编程之udp_dict_serve服务端--引入配置文件

注意&#xff1a;本篇博客只是对上一篇博客功能的增加 1.创建配置文件(翻译) Dict.txt apple: 苹果 banana: 香蕉 cat: 猫 dog: 狗 book: 书 pen: 笔 happy: 快乐的 sad: 悲伤的 run: 跑 jump: 跳 teacher: 老师 student: 学生 car: 汽车 bus: 公交车 love: 爱 hate: 恨 hell…

stm32定时器输出比较----驱动步进电机

定时器输出比较理论 OC(Output Compare)输出比较输出比较可以通过比较CNT与CCR寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形每个高级定时器和通用定时器都拥有4个输出比较通道高级定时器的前3个通道额外拥有死区生成和互补输出…

ArrayList 类 (顺序表)

目录 一. ArrayList 基本介绍 二. ArrayList 中的法及其应用 1. 添加元素 (1) add() (2) addAll() 2. 删除元素 (1) remove() (2) removeAll() 3. 遍历元素 (1) for 循环遍历 (2) for - each 遍历 (3) 迭代器遍历 (4) 列表迭代器遍历 4. 判断 (1) cotains() (2…

ubuntu22.04安装PaddleX3

PaddleOCR 安装过程可以参考PaddleX本地安装教程 我的电脑环境配置&#xff1a; ubuntu22.04 cuda11.8&#xff08;之前安装的是12.4没有匹配的paddle-gpu;这里改成11.8&#xff09; 一、安装基础环境 1、 conda create -n ppx1 python3.10 2、 conda activate ppx1 3、…

圣诞快乐(h5 css js(圣诞树))

一&#xff0c;整体设计思路 圣诞树h5&#xff08;简易&#xff09; 1.页面布局与样式&#xff1a; 页面使用了全屏的黑色背景&#xff0c;中央显示圣诞树&#xff0c;树形由三层绿色的三角形组成&#xff0c;每一层的大小逐渐变小。树干是一个棕色的矩形&#xff0c;位于三角…

行业观察|西门子收购Altair:从多学科仿真到工业元宇宙

在当今数字化时代&#xff0c;工业领域正经历着深刻的变革。而CAE软件作为工业领域关键工具&#xff0c;在产品设计、验证和优化等环节发挥着越来越重要的作用。 11月&#xff0c;西门子宣布收购Altair的新闻屠版了整个朋友圈&#xff0c;无疑验证了CAE在制造业的核心地位。对A…

【Verilog】UDP用户原语

User-defined primitives 概述基本语法组合逻辑的UDP时序逻辑的UDPUDP 符号表 Verilog HDL&#xff08;简称 Verilog &#xff09;是一种硬件描述语言&#xff0c;用于数字电路的系统设计。可对算法级、门级、开关级等多种抽象设计层次进行建模。 Verilog 不仅定义了语法&…

计算机网络压缩版

计算机网络到现在零零散散也算过了三遍&#xff0c;一些协议大概了解&#xff0c;但总是模模糊糊的印象&#xff0c;现在把自己的整体认识总结一下&#xff0c;&#xff08;本来想去起名叫《看这一篇就够了》&#xff0c;但是发现网上好的文章太多了&#xff0c;还是看这篇吧&a…