移位密码(凯撒密码)

一、移位密码(凯撒密码)

移位密码是一种简单的加密方法,它通过将明文中的每个字符按照一定规则向左或向右移动若干位来生成密文。移位密码通常使用偏移量来确定每个字符移动的位数。

二、加密解密

1. 移位加密

移位加密算法将明文中的每个字符按照一定规则向左或向右移动若干位来生成密文。具体步骤如下:

  • 选择一个偏移量 k k k,确定每个字符需要向左移动还是向右移动。
  • 对于明文中的每个字符,根据偏移量将其向左或向右移动相应的位数,并将结果记录下来。
  • 将所有移位后的字符连接起来,得到密文。

例如,如果明文是 HELLO,偏移量为3,则加密后的密文就是
KHOOR(可结合下方字母数字表查看)。这里的偏移量表示字母移动的距离,当偏移量为正数时,字母向右移动;当偏移量为负数时,字母向左移动。

2. 移位解密

移位解密算法将密文中的每个字符按照与加密相反的规则向左或向右移动若干位来还原明文。具体步骤如下:

  • 选择一个偏移量 k k k,确定每个字符需要向左移动还是向右移动。
  • 对于密文中的每个字符,根据偏移量将其向左或向右移动相应的位数,并将结果记录下来。
  • 将所有移位后的字符连接起来,得到明文。

例如,如果密文是 KHOOR,偏移量为3,则解密后的明文就是 HELLO

3.其他表述

x是加密前的字符,y是加密后的字符。

对26取余的作用是确保加密和解密过程中使用的数字始终保持在0~25的范围内,从而实现正确的加密和解密操作。

加密: e ( x ) = x + k m o d 26 e(x)=x+k\bmod26 e(x)=x+

学习网络安全技术的方法无非三种:

第一种是报网络安全专业,现在叫网络空间安全专业,主要专业课程:程序设计、计算机组成原理原理、数据结构、操作系统原理、数据库系统、 计算机网络、人工智能、自然语言处理、社会计算、网络安全法律法规、网络安全、内容安全、数字取证、机器学习,多媒体技术,信息检索、舆情分析等。

第二种是自学,就是在网上找资源、找教程,或者是想办法认识一-些大佬,抱紧大腿,不过这种方法很耗时间,而且学习没有规划,可能很长一段时间感觉自己没有进步,容易劝退。

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

第三种就是去找培训。

image.png

接下来,我会教你零基础入门快速入门上手网络安全。

网络安全入门到底是先学编程还是先学计算机基础?这是一个争议比较大的问题,有的人会建议先学编程,而有的人会建议先学计算机基础,其实这都是要学的。而且这些对学习网络安全来说非常重要。但是对于完全零基础的人来说又或者急于转行的人来说,学习编程或者计算机基础对他们来说都有一定的难度,并且花费时间太长。

第一阶段:基础准备 4周~6周

这个阶段是所有准备进入安全行业必学的部分,俗话说:基础不劳,地动山摇
image.png

第二阶段:web渗透

学习基础 时间:1周 ~ 2周:

① 了解基本概念:(SQL注入、XSS、上传、CSRF、一句话木马、等)为之后的WEB渗透测试打下基础。
② 查看一些论坛的一些Web渗透,学一学案例的思路,每一个站点都不一样,所以思路是主要的。
③ 学会提问的艺术,如果遇到不懂得要善于提问。
image.png

配置渗透环境 时间:3周 ~ 4周:

① 了解渗透测试常用的工具,例如(AWVS、SQLMAP、NMAP、BURP、中国菜刀等)。
② 下载这些工具无后门版本并且安装到计算机上。
③ 了解这些工具的使用场景,懂得基本的使用,推荐在Google上查找。

渗透实战操作 时间:约6周:

① 在网上搜索渗透实战案例,深入了解SQL注入、文件上传、解析漏洞等在实战中的使用。
② 自己搭建漏洞环境测试,推荐DWVA,SQLi-labs,Upload-labs,bWAPP。
③ 懂得渗透测试的阶段,每一个阶段需要做那些动作:例如PTES渗透测试执行标准。
④ 深入研究手工SQL注入,寻找绕过waf的方法,制作自己的脚本。
⑤ 研究文件上传的原理,如何进行截断、双重后缀欺骗(IIS、PHP)、解析漏洞利用(IIS、Nignix、Apache)等,参照:上传攻击框架。
⑥ 了解XSS形成原理和种类,在DWVA中进行实践,使用一个含有XSS漏洞的cms,安装安全狗等进行测试。
⑦ 了解一句话木马,并尝试编写过狗一句话。
⑧ 研究在Windows和Linux下的提升权限,Google关键词:提权
image.png
以上就是入门阶段

第三阶段:进阶

已经入门并且找到工作之后又该怎么进阶?详情看下图
image.png

给新手小白的入门建议:
新手入门学习最好还是从视频入手进行学习,视频的浅显易懂相比起晦涩的文字而言更容易吸收,这里我给大家准备了一套网络安全从入门到精通的视频学习资料包免费领取哦!

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
凯撒密码加解密程序(C语言) 2009年09月30日 星期三 13:21 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 #include #include void menu()/*菜单,1.加密 2.解密 3.退出*/ { clrscr(); printf("\n==============================================================================="); printf("\n1.Encrypt the file"); printf("\n2.Decrypt the file"); printf("\n3.Quit\n"); printf("===============================================================================\n"); printf("Please select a item:"); return; } char encrypt(char ch,int n)/*加密函数,把字符向循环移位n*/ { while(ch>='A'&&ch='a'&&ch<='z') { return ('a'+(ch-'a'+n)%26); } return ch; } main() { int i,n; char ch0,ch1; FILE *in,*out; char infile[10],outfile[10]; textbackground(RED); textcolor(LIGHTGREEN); clrscr(); menu(); ch0=getch(); while(ch0!='3') { if(ch0=='1') { clrscr(); printf("\nPlease input the infile:"); scanf("%s",infile);/*输入需要加密的文件名*/ if((in=fopen(infile,"r"))==NULL) { printf("Can not open the infile!\n"); printf("Press any key to exit!\n"); getch(); exit(0); } printf("Please input the key:"); scanf("%d",&n);/*输入加密密码*/ printf("Please input the outfile:"); scanf("%s",outfile);/*输入加密后文件的文件名*/ if((out=fopen(outfile,"w"))==NULL) { printf("Can not open the outfile!\n"); printf("Press any key to exit!\n"); fclose(in); getch(); exit(0); } while(!feof(in))/*加密*/ { fputc(encrypt(fgetc(in),n),out); } printf("\nEncrypt is over!\n"); fclose(in); fclose(out); sleep(1); } if(ch0=='2') { clrscr(); printf("\nPlease input the infile:"); scanf("%s",infile);/*输入需要解密的文件名*/ if((in=fopen(infile,"r"))==NULL) { printf("Can not open the infile!\n"); printf("Press any key to exit!\n"); getch(); exit(0); } printf("Please input the key:"); scanf("%d",&n);/*输入解密密码(可以为加密时候的密码)*/ n=26-n; printf("Please input the outfile:"); scanf("%s",outfile);/*输入解密后文件的文件名*/ if((out=fopen(outfile,"w"))==NULL) { printf("Can not open the outfile!\n"); printf("Press any key to exit!\n"); fclose(in); getch(); exit(0); } while(!feof(in)) { fputc(encrypt(fgetc(in),n),out); } printf("\nDecrypt is over!\n"); fclose(in); fclose(out); sleep(1); } clrscr(); printf("\nGood Bye!\n"); sleep(3); getch(); } }
移位密码算法也被称为凯撒密码,是一种简单的密码算法,它将明文中的每个字母移动固定数量的位置来加密。例如,如果移动的数量是3,则明文中的字母A将被替换为D,字母B将被替换为E,以此类推。 以下是一个使用Python实现移位密码算法的示例: ```python def encrypt(text, shift): """ 实现移位密码算法的加密函数 :param text: 明文字符串 :param shift: 移动的数量 :return: 密文字符串 """ cipher = "" for char in text: # 如果字符是大写字母 if char.isupper(): cipher += chr((ord(char) + shift - 65) % 26 + 65) # 如果字符是小写字母 elif char.islower(): cipher += chr((ord(char) + shift - 97) % 26 + 97) # 如果字符不是字母 else: cipher += char return cipher ``` 在上面的代码中,我们实现了一个名为“encrypt”的函数,它接受两个参数:明文字符串和移动的数量。该函数首先定义了一个名为“cipher”的空字符串,然后遍历明文字符串中的每个字符。 对于每个字符,我们检查它是否是一个大写或小写字母。如果它是大写字母,则使用ord(char)函数将其转换为ASCII值,然后将其移位并使用chr()函数将其转换回字符。如果它是小写字母,则使用类似的方法进行转换。如果字符不是字母,则直接将其添加到密文字符串中。 最后,我们返回密文字符串。 以下是一个使用上面定义的“encrypt”函数加密消息的示例: ```python message = "Hello, world!" shift = 3 encrypted_message = encrypt(message, shift) print(encrypted_message) ``` 该代码输出: ``` Khoor, zruog! ``` 这是使用移位密码算法加密“Hello, world!”消息,并将每个字母向移动3个位置得到的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值