加密算法

您所在的位置:网站首页 python简单加密算法 加密算法

加密算法

2023-09-20 04:22| 来源: 网络整理| 查看: 265

过去的经验往往是走向未来的枷锁,因为在过时技术中投入的沉没成本会阻碍人们拥抱新技术。

                                                                                         

   —— chai2010

 

一.引子

从人类诞生出智慧,发明文字开始,人类就拥有了对信息进行加密的需求,随后的几千年里,各种信息加密方法不断产生、发展,在今天,我们把各种加密方法称之为加密算法。

英国作家阿瑟·柯南道尔在他风靡全球的侦探小说《福尔摩斯探案集》中记录了一个“跳舞的小人”的故事。

在根据原著改编的电视剧《神探夏洛克》第一季第二集中,夏洛克对凶手留下的符号(苏州码子)进行研究后得出每个小人对应着一个英文字母,进而通过频率分析的方法找出了凶手。

这种用替代或者置换移位的方法进行加密的方法被称为古典加密。

二.凯撒密码

凯撒密码是古罗马大帝凯撒在军事活动中创造的一种加密方法,用到的是古典密码中最简单的置换移位方法。其原理如下:

将字母依次向后移动三个位置,在上图中,用D代表A,E代表B......

A代表X,B代表Y,C代表Z

这个过程用代码是极其容易实现的(C语言加密):

#include #include int main(){ printf("请输入明文:"); char a[1000];   gets(a);                           //输入明文  int n; printf("请输入移位几位数:"); scanf("%d",&n); //输入移动位数 while(n>26){ n-=26; } //移动位数不能大于26,取余数 int len=strlen(a); //获取明文位数 for(int i=0;i='a'&&a[i]='A'&&a[i]='a'&&a[i]'z') a[i]=a[i]+(n-26); else a[i]+=n; } if(a[i]>='A'&&a[i]'Z') a[i]=a[i]+(n-26); else a[i]+=n; } } }   //用if语句来对大小写进行判定  printf("密文是:"); puts(a); //输出密文 }

解密也同样简单,只需要将加密过程倒过来(C语言):

#include #include int main(){ printf("请输入密文:"); char a[1000]; gets(a); //输入密文 int n; printf("请输入移位几位数:"); scanf("%d",&n); //输入移动位数 while(n>26){ n-=26; } //移动位数不能大于26,取余数   int len=strlen(a);                 //获取密文位数    n=26-n;                            //只改了这一处,你发现了吗 for(int i=0;i='a'&&a[i]='A'&&a[i]='a'&&a[i]'z') a[i]=a[i]+(n-26); else a[i]+=n; } if(a[i]>='A'&&a[i]'Z') a[i]=a[i]+(n-26); else a[i]+=n; } } }   //用if语句来对大小写进行判定  printf("明文是:");   puts(a);             //输出明文  }

很显然,加解密可以放在一段代码里,上面的代码还是过于简陋了,对于输入数字和符号的情况也可以用if语句来进行判断,但不管怎么样,这是一种可行的方案。

对于Python来说代码短得多(加密):

def kaisa(m): #加密函数 if m==" ": return ' ' elif 97


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3