【密码学】密码棒密码

密码棒密码


大约在公元前700年,古希腊军队使用一种叫做scytale的圆木棍来进行保密通信。其使用方法是这样的:把长带子状羊皮纸缠绕在圆木棍上,然后在上面写字;解下羊皮纸后,上面只有杂乱无章的字符,只有再次以同样的方式缠绕到同样粗细的棍子上,才能看出所写的内容。快速且不容易解读错误的优点,使它在战场上大受欢迎。但是它很容易就被破解了,因为此方法还是会将容易引发“联想”的字或“提示”留在编码文中,所以在原文编成编码文时,就必需将一些敏感字眼除去或替换。

这种scytale圆木棍也许是人类最早使用的文字加密解密工具。据说主要是古希腊城邦中的斯巴达人(Sparta)在使用它,所以它又被叫做“斯巴达棒”。

在这里插入图片描述

斯巴达棒的加密原理属于密码学中的“移位法”加密,因为它通过改变文本中字母的阅读顺序来达到加密的目的。


加密

假设那棒可写下四个字母使之围绕成圆圈且5个字母可连成一线。
范例文字:“Help me I am under attack”。
欲加密:
—————————
H E L P M
E I A M U
N D E R A
T T A C K
—————————
==>“HENTEIDTLAEAPMRCMUAK”


解密

解密的方法其实就是将编码方法反过来:
假设编码文为"HENTEIDTLAEAPMRCMUAK"
—————————
H E N T---------
E  I  D T---------
L  A  E A---------
P M R C---------
M U A K---------
—————————
==>“HELPMEIAMUNDERATTACK”


历史

间接的证据指出,最早提到密码棒的是一位西元前7世纪的希腊诗人阿尔基罗库斯,后来的希腊和罗马作家也在作品提到。

希腊历史学家普鲁塔克(Plutarch)曾写下密码棒的用法。


在线解密:http://www.atoolbox.net/Tool.php?Id=915


参考文献:

1.《密码历史与传奇》 [美] 克雷格·鲍尔(Craig P.Bauer)人民邮电出版社 2019-4-1
2. 国家密码管理局 《最早的密码工具》 https://sca.gov.cn/sca/zxfw/2017-04/24/content_1011713.shtml 2017-04-24
3. 维基百科 密码棒 https://zh.wikipedia.org/zh-hans/%E5%AF%86%E7%A2%BC%E6%A3%92 2020年10月7日 (星期三) 05:51

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

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

相关文章

python图片爬虫

#!/usr/bin/env python # -*- coding:utf-8 -*- import argparse import os import re import sys import urllib import json import socket import urllib.request import urllib.parse import urllib.error # 设置超时 import timetimeout 5 socket.setdefaulttimeout(time…

【程序员社交】多和高层次人群交流

定义问题:如何多和高层次人群交流获取经验提升自己? 收集信息:通过社交媒体、行业论坛、行业大会等途径获取高层次人群的信息和观点,并了解他们的工作经历、技能和能力。 分析信息:分析收集到的信息,了解…

Git全栈体系(六)

第十章 自建代码托管平台-GitLab 一、GitLab 简介 GitLab 是由 GitLabInc.开发,使用 MIT 许可证的基于网络的 Git 仓库管理工具,且具有 wiki 和 issue 跟踪功能。使用 Git 作为代码管理工具,并在此基础上搭建起来的 web 服务。GitLab 由乌克…

CBCGPRibbon 添加Edit、Combox、Hyperlink控件

编辑框、下拉框、网址按钮等是我们常用的控件,对应的类是 CBCGPRibbonEdit CBCGPRibbonComboBox CBCGPRibbonHyperlink 使用实例如下: //Edit CBCGPRibbonEdit* pEdit new CBCGPRibbonEdit(2001, 200); pEdit->SetReadOnly(TRUE); …

Kubernetes 二进制搭建

Kubernetes 二进制搭建 一、二进制搭建 Kubernetes v1.201.1 部署准备1.2 操作系统初始化配置1.3 部署 etcd 集群1.3.1 etcd 作为服务发现系统,有以下的特点1.3.2 准备签发证书环境1.3.3 在 master01 节点上操作1.3.4 生成证书 1.4 部署 docker引擎1.4.1 部署 Maste…

minio启动后访问不到api地址

本地docker 安装minio(23版)后界面能访问到,项目中api地址访问失败执行下面命令 docker run -d -p 9000:9000 -p 9001:9001 --name minio1 -v /home/minio/data:/data -e "MINIO_ROOT_USERminio" -e "MINIO_ROOT_PASSWORDmin…

Python-OpenCV中的图像处理-傅里叶变换

Python-OpenCV中的图像处理-傅里叶变换 傅里叶变换Numpy中的傅里叶变换Numpy中的傅里叶逆变换OpenCV中的傅里叶变换OpenCV中的傅里叶逆变换 DFT的性能优化不同滤波算子傅里叶变换对比 傅里叶变换 傅里叶变换经常被用来分析不同滤波器的频率特性。我们可以使用 2D 离散傅里叶变…

使用埋点方式对应用监控

在指标监控的世界里,应用和业务层面的监控有两种典型手段,一种是在应用程序里埋点,另一种是分析日志,从日志中提取指标。埋点的方式性能更好,也更灵活,只是对应用程序有一定侵入性,而分析日志的…

学习笔记|printf函数的实现|不同操作系统中的换行|数的进制:2进制、10进制、16进制转换|STC32G单片机视频开发教程(冲哥)|第五集:C语言基础

文章目录 1.C语言 printf函数的实现Tips:ASCII码表Tips:找不到头文件怎么办?主函数添加程序:常规用法:Tips:不同操作系统中的换行 ⒉数的进制:2进制、10进制、16进制.常见的对应:应用:整体端口的操作 3.C语…

SpringBoot禁用Swagger3

Swagger3默认是启用的&#xff0c;即引入包就启用。 <dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version> </dependency> <dependency><groupId…

Windows、 Linux 等操作系统的基本概念及其常见操作

Windows 和 Linux 是两种常见的操作系统&#xff0c;它们在计算机领域中广泛使用。下面我将为您介绍它们的基本概念以及一些常见的操作。 **Windows 操作系统&#xff1a;** 1. **基本概念&#xff1a;** Windows 是由微软公司开发的操作系统系列&#xff0c;旨在为个人计算机…

利用Arthas+APM监控进行Java性能深度定位

大家可能都用过APM监控&#xff0c;包括开源的Skywalking、商用的卓豪&#xff08;ZOHO&#xff09;ManageEngine APM应用性能监控、以及云监控产品如听云&#xff08;Server监控&#xff09;&#xff0c;这些APM监控产品大大方便了我们实时监控应用性能&#xff0c;并实现性能…

Redis_分片集群

10. 分片集群 10.1简介 业务场景&#xff0c;需要存储50G的数据。对于内存和硬盘配置不足&#xff0c;选用两种方式 一种&#xff1a;纵向扩展&#xff1a;加内存&#xff0c;加硬盘&#xff0c;提高CPU。简单、直接。RDB存储效率要考虑。成本要考虑。二种&#xff1a;横向扩…

日期切换

组件&#xff1a;<template><div class"time-picker"><el-radio-group size"small" v-model"timeType" change"changePickerType"><el-radio-button label"hour" v-if"isShow">时</el…

Vue [Day7] 综合案例

核心概念回顾 state&#xff1a;提供数据 getters&#xff1a;提供与state相关的计算属性 mutations&#xff1a;提供方法&#xff0c;用于修改state actions&#xff1a;存放异步操作 modules&#xff1a;存模块 功能分析 https://www.npmjs.com/package/json-server#ge…

如何学习大数据

文章目录 每日一句正能量前言一、什么是大数据二、大数据的应用领域三、社会对大数据的人才需求四、大数据的学习路线后记 每日一句正能量 多数人认为&#xff0c;一旦达到某个目标&#xff0c;人们就会感到身心舒畅。但问题是你可能永远达不到目标。把快乐建立在还不曾拥有的事…

OpenCV实例(八)车牌字符识别技术(二)字符识别

车牌字符识别技术&#xff08;二&#xff09;字符识别 1.字符识别原理及其发展阶段2.字符识别方法3.英文、数字识别4.车牌定位实例 1.字符识别原理及其发展阶段 匹配判别是字符识别的基本思想&#xff0c;与其他模式识别的应用非常类似。字符识别的基本原理就是对字符图像进行…

JavaScript 操作历史记录api怎样使用 JavaScript

JavaScript 操作历史记录api怎样使用 JavaScript History 是 window 对象中的一个 JavaScript 对象&#xff0c;它包含了关于浏览器会话历史的详细信息。你所访问过的 URL 列表将被像堆栈一样存储起来。浏览器上的返回和前进按钮使用的就是 history 的信息。 History 对象包含…

WeiSpeechSynthesizer.java

目录 1 WeiSpeechSynthesizer.java 1.1 onSpeakProgress 1.2 onSpeakPaused 1.3 onCompleted WeiSpeechSynthesizer.javainitListener private InitListener initListener=new InitListener() {@Override

【数据结构和算法】位图 BitMap

1. 位图结构的实现 /*** 位图数据类型 <br />* 位图以字节的一位为单位进行元素的操作&#xff0c;但是位运算以一个字节整体为运算单位&#xff0c;因此代码中以 bytes[index] 进行运算。* 位图元素的添加即找到相应的位置&#xff0c;将其置为1&#xff0c;实现时将该…