《丞相好梦中杀人,我喜梦中听课》(1)密码学入门

news2025/7/5 22:06:37

前言

🍀作者简介:被吉师散养、喜欢前端、学过后端、练过CTF、玩过DOS、不喜欢java的不知名学生。

🍁个人主页:红中

🫒每日emo:等我把脸皮磨厚

🍂专栏地址:网安专栏

 今天周日,本来想睡个好觉,突然想起系主任临时加了节早八。

让我死吧。。。

设个闹钟,早上把会议挂上,签个到,直接睡大觉。

十点多醒了,发现讲的凯撒密码和维吉尼亚密码

 作为一个前几天刚学完des加密的人,这俩怎么能难住我,现挂直接出文章

 凯撒密码

看了眼,发现这个凯撒密码挺简单的

 在密码学中,恺撒密码(英语:Caesar cipher),或称恺撒加密恺撒变换变换加密,是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。当年恺撒曾用此方法与其将军们进行联系。---------------------------------------引自百度百科

要是我在那个年代出生,凯撒密码?给你打穿

还是老三样

  • data:加密/解密的数据
  • key:凯撒密码没密钥
  • mode:加密/解密

 

凯撒密码需要两个东西

  1. 加密的明文
  2. 后移的位数

简单来说就是根据ASCII表推位数

好比对A进行加密,后移位数是7

加密后就得到H

没了,就这么简单

那我就简单叭叭两句,凯撒密码只对字母有效,并且区分大小写。

代码实现

#include <stdio.h>

int main(){
	char plaintext[100],ciphertext[100];
	char m;
	int i,j=0;

	printf("请输入明文:\n");
	gets(plaintext);
	printf("请输入加密位数:\n");
	scanf("%d", &i);
		
	
	for(j = 0; plaintext[j] != '\0'; j++)
	{
		m = plaintext[j];
		if(m <= 'Z' && m >='A')//往后移
			ciphertext[j] = (m - 'A' + i) % 26 + 'A';
		else if(m <= 'z' && m >='a')
			ciphertext[j] = (m - 'a' + i) % 26 + 'a';
		else ciphertext[j] = m;
	}
	ciphertext[j] = '\0';//添加结束符
	printf("加密后的密文如下:\n");
	for(j = 0; ciphertext[j] != '\0'; j++)
		printf("%c", ciphertext[j]);
	printf("\n");
	
}

 

 

维吉尼亚密码

这个密码呢,其实也挺简单的,就是在凯撒密码的基础上加了个密钥

密码表

 第一行就是密钥

第一列是明文

好比对m进行加密,密钥是z,

 密文为L

所以这玩意和凯撒有啥关系。。

想不明白

代码实现

#include <stdio.h>
#include <string.h>


void encrypt(char *text, char *result, char *k)
{
	int i,j=0,z=0;
	for(i=0;i<strlen(text);i++)//在明文长度内循环
	{
		if(text[i]>='a' && text[i] <= 'z')  //小写字母
			result[z]=(text[i]-'a'+k[j]-'a')%26 +'A';
		else								//大写字母
			result[z]=(text[i]-'A'+k[j]-'a')%26 +'A';
		j++;
		if(j>=strlen(k)) j=0;//以密钥长度为一个周期循环
		z++;
	}
}



int main()
{
		char text[99]="";
		char result[99]="";
		char k[99]="";


		printf("请输入一段小写英文字母:");//默认输入为一段连续英文字母串
		scanf("%s",text);
		printf("请输入密钥:");//密钥默认小写
		scanf("%s",k);
	
		encrypt(text,result,k);
		printf("密文为:%s\n",result);
		

	
}

我得做核酸去了,溜了溜了

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

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

相关文章

金融开放度指数-世界银行三位数字编码、ISO Alpha-3 Code等多指标数据

1、数据来源&#xff1a;http://web.pdx.edu/~ito/Chinn-Ito_website.htm 2、时间跨度&#xff1a;1970-2019 3、区域范围&#xff1a;全国 4、指标说明&#xff1a; Chinn-Ito指数(KAOPEN)是衡量一个国家资本账户开放程度的指标。 该指数最初是在Chinn和Ito (Journal of D…

并发基础(四):线程池

尺有所短&#xff0c;寸有所长&#xff1b;不忘初心&#xff0c;方得始终。 请关注公众号&#xff1a;星河之码 线程池技术是一种多线程处理形式&#xff0c;将任务添加到队列中&#xff0c;通过线程池中创建出来的现成执行这些任务&#xff0c;省去了创建线程和销毁线程的消耗…

let const var区别

文章目录写在前面1.var关键字1.1 没有块级作用域的概念&#xff0c;有全局作用域、函数作用域的概念1.2 存在变量提升1.3 全局作用域用var声明的变量会挂载到window对象上1.4 同一作用域中允许重复声明1.5 不初始化值默认为undefined2.let关键字2.1 有块级作用域的概念2.2 不存…

HTB靶机:RainyDay

目录介绍主机信息探测网站探测子域名爆破(BurpSuite)目录爆破爆破参数值分析 & 破解hash登录系统反弹shell端口转发内网穿透【很坑】配置socks代理内网扫描换用windows做内网渗透子域名信息收集爆破密钥位置爆破密钥内容JWT攻击进程监控Flag1 & 获取SSH私钥提权python沙…

UE4 通过按键切换不同的HUD

咱们在玩游戏的时候&#xff0c;通常会和界面进行各种各样的互动&#xff0c;而且会动都是在不同的界面上&#xff0c;所以需要在不同的界面上进行切换或者多个HUD重叠显示在一起。 首先创建两个HUD 2.重新定义一个PlayerController类 // Fill out your copyright notice…

被裁后半月面试8家公司无果,凭借这份Java面试指南成功入职阿里

前言 上个月班上的好好的突然被通知"毕业了"&#xff0c;现在工作也确实不好找。之前近一个月面了很多大大小小的公司降薪太严重都没考虑去&#xff0c;最后没办法本来都打算随便去一家了却偶然得到一个阿里的面试机会&#xff0c;足足面了七面&#xff08;我太难了…

前有刘德华,后有腾格尔和光头李进,明星为何都热衷于线上演唱会

2022年11月19日&#xff0c;有着“草原歌神”之称的腾格尔&#xff0c;开启了自己的线上演唱会&#xff0c;并且取得了圆满的成功。其实在此之前&#xff0c;天王刘德华已经在某音平台&#xff0c;两次开启自己的线上演唱会&#xff0c;都受到了非常好的效果。 为什么音乐领域的…

手把手教你定位线上MySQL锁超时问题,包教包会

昨晚我正在床上睡得着着的&#xff0c;突然来了一条短信。 ​什么&#xff1f;线上的订单无法取消&#xff01; 我赶紧登录线上系统&#xff0c;查看业务日志。 ​发现有MySQL锁超时的错误日志。 不用想&#xff0c;肯定有另一个事务正在修改这条订单&#xff0c;持有这条订单的…

【边缘注意:深度多尺度特征】

Learning a Deep Multi-Scale Feature Ensemble and an Edge-Attention Guidance for Image Fusion &#xff08;学习深度多尺度特征集成和图像融合的边缘注意指南&#xff09; 在本文中&#xff0c;我们提出了一种用于红外和可见光图像融合的深度网络&#xff0c;该网络将具…

带你了解什么是Java虚拟机运行时数据区

一、前言 程序都是运行在内存里的&#xff0c;所以对于一门开发语言来说&#xff0c;对于内存的管理都是重中之重的&#xff0c;前有C、C需要开发者管理内存&#xff0c;后有Java的自动内存管理&#xff0c;到如今的内存安全的Rust。 二、运行时数据区概览 Java虚拟机在运行…

PyQt5可视化编程-菜单和工具栏

一、简介 PyQt5 是Digia的一套Qt5与python绑定的应用框架&#xff0c;同时支持2.x和3.x。本教程使用的是3.x。Qt库由Riverbank Computing开发&#xff0c; 是最强大的GUI库之一 &#xff0c;官方网站&#xff1a;www.riverbankcomputing.co.uk/news。 PyQt5是由一系列Python模块…

Allegro上如何让飞线以方框形式显示

Allegro上如何让飞线以方框形式显示 Allegro可以让飞线以方框形式显示,让走线评估更简单,尤其是电源和地,如下图 选择Edit-Property Find选择Nets 选择需要改成方框显示的网络,左边选择Voltage,Value里面输入任意一个数字,比如0或者1,apply 可以看到网络已经显示成…

八.调试的技巧

目录 一.调试 1.何为调试&#xff1f; 2.调试的基本步骤 二.debug和release的介绍 三.Windows环境调试介绍 1.调试环境准备 2.学会快捷键 &#xff08;1&#xff09;F5 &#xff08;2&#xff09;F9 &#xff08;3&#xff09;F10 &#xff08;4&#xff09;F11 &am…

【Java学习】JavaWeb ---- JDBC

文章目录JDBC 快速入门ResultSet数据连接池JDBC 快速入门 下载jar包&#xff08;百度&#xff09;->add as library 代码 package com.ith.jdbc;import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement;public class demo1 {public stati…

HTTPS一定安全吗

https是一种通过计算机网络进行安全通信的传输协议&#xff0c;主要目的是提供对网站服务器的身份认证&#xff0c;保护交换数据的隐私与完整性&#xff0c;但不能说使用htttps就一定绝对的安全。 有一点需要了解的是&#xff0c;使用HTTPS 在内容传输的加密上使用的是对称加密…

使用dreamweaver制作采用DIV+CSS进行布局——美食甜品店铺加盟企业HTML静态网页 ——学生美食网页设计作品静态HTML网页模板源码

&#x1f468;‍&#x1f393;静态网站的编写主要是用HTML DIVCSS JS等来完成页面的排版设计&#x1f469;‍&#x1f393;,常用的网页设计软件有Dreamweaver、EditPlus、HBuilderX、VScode 、Webstorm、Animate等等&#xff0c;用的最多的还是DW&#xff0c;当然不同软件写出的…

C++标准库分析总结(九)——<适配器>

目录 1 适配器简介 2 适配器使用分类 2.1 容器适配器 2.2 函数适配器 2.2.1 常见的函数适配器 2.2.2 bind2nd 2.2.3 not1 2.2.4 bind用法 2.3 迭代器适配器 2.4 X适配器 1.6.1 ostream_iterator 1.6.2 istream_iterator 1 适配器简介 把一个原本存在的东西&#xf…

递归和排序算法的应用

一、递归常见问题和注意事项 1. 堆栈溢出&#xff1b; 2. 警惕重复运算&#xff1a; 可以使用一个数据结构&#xff08;散列表&#xff09;将已经计算过的f(k)保存起来&#xff0c;每当调用到f(k)时&#xff0c;先产看下是否已经求结果&#xff0c;从而避免重复计算。 3. 将递…

【嵌入式Linux】5.Ubuntu 交叉编译工具链安装

前言 交叉编译器中“交叉”的意思就是在一个架构上编译另外一个架构的代码,相当于两种架构“交叉”起来了。 其基本特点是: 1、它肯定是一个 GCC 编译器。 2、这个 GCC 编译器是运行在 X86 架构的 PC 上的。 3、这个 GCC 编译器是编译 ARM 架构代码的,也就是编译出来的可…

MongoDB 的安装、启动与连接

MongoDB 的安装、启动与连接一、MongoDB Community Server1. 安装(1) 下载(2) 安装1) 解压2) 配置环境变量3) 配置数据库存放目录a. 创建b. 赋权2. 启动验证二、MongoDB Compass安装三、连接一、MongoDB Community Server 1. 安装 (1) 下载 官网下载安装 (2) 安装 1) 解压…