密码学入门 古老的围栏密码技术

1、简述

        由于隐私和安全的重要性不断增加,已经开发了多种加密方法和技术来保护我们的敏感数据。随着时间的推移而演变,从经典密码学发展到现代密码学。

        在本文中,我们将了解一种被称为围栏密码技术的技术,涵盖其加密和解密过程及其局限性。

        在了解围栏密码之前,我们先讨论一下经典密码学技术,即替换和转置。在替换技术中,原始消息的字符被替换为不同的字符、数字或符号。凯撒密码是替代技术的一个例子。相反,转置技术涉及通过排列重新排列明文。

        围栏密码属于转置技术的范畴,我们改变每个明文字母的位置。

2、加密

        围栏密码的加密过程需要选择轨道的数量,以所选轨道数量确定的Z字形对角写入消息,然后从左到右将每个轨道上的字符组合起来,以获得加密的消息。下面,我们将用一个例子来解释每个步骤。

        首先,将“RAILFENCE”视为纯文本。接下来,让我们将轨道或围栏的数量取为三,这也可以称为密钥。该键将决定锯齿形图案的高度。随后,我们可以按从左到右的Z字形斜写消息:

        最后,我们将组合各个行来生成密文,在本例中为“RFEALECIN”。

3、解密

        要开始解密,我们首先需要知道密文中的行数和列数。列数等于密文的长度。然后,我们必须计算出用于加密的行数,作为密钥。在确定了行和列的数量后,我们可以构建表格并确定字母的合适位置,因为围栏密码以Z字形从左到右对角加密文本:

        *表示密文中的字母被放置以形成明文的位置。我们从第一个“rail”(最上面一行)开始填写字母,然后从左向右移动。然后,我们在下一个轨道上继续这种模式,以此类推,直到所有星号位置都填充了密文中的字母:

        我们可以将从上到下、从左到右的字符组合起来,得到明文,即“RAILFENCE”。

4、小结

        看起来是不是觉得有种开玩笑的感觉?不过很多技术都是从看似可笑的方式发展出来。随着时代进步不断的将旧的技术淘汰,也是很自然的事情。

        使用频率分析可以很容易地破坏围栏密码的加密。加密的密钥是一个小于或等于密文长度的数字。因此,它极易受到暴力攻击。

        简言之,围栏技术是经典密码学的入门技术,现代自然没有人使用,它的局限性使其适合用于教育目的。因此,要保护敏感数据,在这个数字时代,我们依靠AES、RSA等现代加密技术来保护我们的信息和隐私。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

k8s声明式资源管理

三种常见的项目发布方式 1、蓝绿发布 2、金丝雀发布(灰度发布) 3、滚动发布 应用程序升级,面临的最大的问题是新旧业务之间的切换,立项-----定稿------需求发布-----开发------测试------发布,测试之后上线&#x…

OpenHarmony底座升级指南(3.2升级4.0)

前言 本文旨在帮助开发者完成底座升级,文中主要以OpenHarmony 3.2 release 升级至OpenHarmony 4.0 release为模板描述。 一、流程概览: 1.1 准备工作 在准备阶段,需要完整收集所有的定制化修改,明确修改人;并且要将…

CTFshow web入门web127-php特性30

开启环境: extract() 函数从数组中将变量导入到当前的符号表,使用数组键名作为变量名,使用数组键值作为变量值 举例就是?a2,就会变成$a2,这里ctf_show有个_需要构造,前面说过php中变量名只有数字字母下划线&#xff…

Demo:基于elementplus的弹窗嵌套表单进行二次封装

基于elementplus的弹窗嵌套表单进行二次封装 所见即所得&#xff1a;简单封装方便工作 ProForm.vue代码&#xff1a; <!--* Author: 忆往昔* LastEditTime: 2024-01-6 14:36:00* email: 15871856064163.com --> <template><div class"penk-form-contain…

机器学习(四) -- 模型评估(3)

系列文章目录 机器学习&#xff08;一&#xff09; -- 概述 机器学习&#xff08;二&#xff09; -- 数据预处理&#xff08;1-3&#xff09; 机器学习&#xff08;三&#xff09; -- 特征工程&#xff08;1-2&#xff09; 机器学习&#xff08;四&#xff09; -- 模型评估…

【LMM 011】MiniGPT-5:通过 Generative Vokens 进行交错视觉语言生成的多模态大模型

论文标题&#xff1a;MiniGPT-5: Interleaved Vision-and-Language Generation via Generative Vokens 论文作者&#xff1a;Kaizhi Zheng* , Xuehai He* , Xin Eric Wang 作者单位&#xff1a;University of California, Santa Cruz 论文原文&#xff1a;https://arxiv.org/ab…

优化|流形优化系列(一)

简介 流形优化是非线性优化的一个分支&#xff0c;它主要关注在特定的几何结构下进行优化。在流形优化中&#xff0c;优化问题通常是在黎曼流形上进行的&#xff0c;而非欧几里得空间。黎曼流形是带有黎曼度量的流形&#xff0c;该度量为流形上的每个点都定义了一个内积。这种…

ThreadLocal线程重用导致用户信息错乱的 Bug

在生产上遇到一个诡异的问题&#xff0c;有时获取到的用户信息是别人的。查看代码后&#xff0c;我发现他使用了 ThreadLocal 来缓存获取到的用户信息。 我们知道&#xff0c;ThreadLocal 适用于变量在线程间隔离&#xff0c;而在方法或类间共享的场景。如果用户信息的获取比较…

Diffusion扩散模型学习2:DDPM前向加噪过程torch实现

参考: https://arxiv.org/pdf/2006.11239.pdf ##论文 https://github.com/dtransposed/code_videos/blob/main/01_Diffusion_Models_Tutorial/Diffusion%20Model.ipynb ##code https://spaces.ac.cn/archives/9119 1、红色框: 前向过程论文公式推出可以从x0原图一步到最终噪声…

软测思考题:自动化测试重运行是好是坏?

测试失败时会发生什么&#xff1f; 如果有人手动运行测试&#xff0c;那么他们会暂停并了解更多信息。但是&#xff0c;当自动测试失败时&#xff0c;其余部分可能会继续运行。在套件完成之前&#xff0c;你是没有办法看到测试报告的&#xff0c;并且自动化程序不会在故障时执…

算法训练第六十天|84.柱状图中最大的矩形

84.柱状图中最大的矩形&#xff1a; 题目链接 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 示例 : 输入&#xff1a;heights [2,1,5,6,2,3] 输出…

Pytest的测试报告——Allure

一、html-report测试报告 html-report测试报告。是pytest下基本的测试报告。要使用pytest-html测试报告&#xff0c;就要确保python版本在3.6及以上即可。本身pytest所提供的测试结果汇总&#xff0c;是基于控制台的文本输出形式。 pytest-html是基于HTML格式实现的测试报告的…