加密算法 |
您所在的位置:网站首页 › python简单加密算法 › 加密算法 |
过去的经验往往是走向未来的枷锁,因为在过时技术中投入的沉没成本会阻碍人们拥抱新技术。
—— 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 |