凯撒密文的破解编程实

原创 2004年09月24日 17:23:00
凯撒密文的破解编程实现


凯撒密文的破解编程实现
近来安全的发展,对密码学的研究越来越重要,虽然我们现在大多采用的是
非对称密码体制,但是同时由于处理及其它的一些重要原因,对传统密码仍然
是在大量的使用,如移位,替代的基本思想仍然没有改变,我个人认为,将来
的很长时间内,我们必将会花大量的时间对密码学进行研究,从而才能促进我
们的电子政务,电子商务的健康发展,下面我要谈的是对一个古典密码-----
凯撒(kaiser)密码的的解密,也就是找出它的加密密钥,从而进行解密,由于
它是一种对称密码体制,加解密的密钥是一样的,下边简单说明一下加解密
加密过程:
密文:C=M+K (mod 26)
解密过程:
明文:M=C-K (mod 26)
详细过程请参考相关资料
破解时主要利用了概率统计的特性,E字母出现的概率最大。

加密的程序实现我就不说了,
下面重点说一下解密的程序实现:我是用C写的,在VC6.0下调试运行正确

#include"stdio.h"
#include"ctype.h"
#include"stdlib.h"


main(int argc ,char *argv[])
{

FILE *fp_ciper,*fp_plain; //密文与明文的文件指针
char ch_ciper,ch_plain;
int i,temp=0; //i用来存最多次数的下标
//temp用在求最多次数时用
int key; //密钥
int j;
int num[26]; //保存密文中字母出现次数

for(i = 0;i < 26; i++)
num = 0; //进行对num[]数组的初始化

printf("======================================================n");
printf("------------------BY 安美洪 design--------------------n");
printf("======================================================n");

if(argc!=3)
{
printf("此为KAISER解密用法:[文件名] [密文路径] [明文路径]n");
printf("如:decryption F:ciper_2_1.txt F:plain.txtn");
} //判断程序输入参数是否正确


if((fp_ciper=fopen(argv[1],"r"))==NULL)
{
printf("打开密文出错!解密失败n");
exit(0);
}
while((ch_ciper=fgetc(fp_ciper))!=EOF)
switch(ch_ciper)
{
case 'A':num[0]=num[0]+1; break; //统计密文各字母出现次数
case 'B':num[1]=num[1]+1; break; //与上同,下边一样
case 'C':num[2]=num[2]+1; break;
case 'D':num[3]=num[3]+1; break;
case 'E':num[4]=num[4]+1; break;
case 'F':num[5]=num[5]+1; break;
case 'G':num[6]=num[6]+1; break;
case 'H':num[7]=num[7]+1; break;
case 'I':num[8]=num[8]+1; break;
case 'J':num[9]=num[9]+1; break;
case 'K':num[10]=num[10]+1;break;
case 'L':num[11]=num[11]+1;break;
case 'M':num[12]=num[12]+1;break;
case 'N':num[13]=num[13]+1;break;
case '0':num[14]=num[14]+1;break;
case 'P':num[15]=num[15]+1;break;
case 'Q':num[16]=num[16]+1;break;
case 'R':num[17]=num[17]+1;break;
case 'S':num[18]=num[18]+1;break;
case 'T':num[19]=num[19]+1;break;
case 'U':num[20]=num[20]+1;break;
case 'V':num[21]=num[21]+1;break;
case 'W':num[22]=num[22]+1;break;
case 'X':num[23]=num[23]+1;break;
case 'Y':num[24]=num[24]+1;break;
case 'Z':num[25]=num[25]+1;break;

}
fclose(fp_ciper);

for(i=0;i<26;i++)
if(num>temp)
{
j=i; // 求出最大次数的下下标
temp=num;
}
if(j<5)
key=(j+1+26)-5; //是按字母表的第几位计算
//而不是按下标,故加1
//5是指E在字母表中的位序
else
key=(j+1)-5;


if((fp_ciper=fopen(argv[1],"r"))==NULL)
{
printf("再次打开密文出错!解密失败n");
exit(0);
} //再次打开密文,进行解密
if((fp_plain=fopen(argv[2],"w"))==NULL)
{
printf("打开或建立明文文件出错!解密失败n");
exit(0);
} //把明文存到此文件
while((ch_ciper=fgetc(fp_ciper))!=EOF)
{
if(ch_ciper > 'E')
ch_plain=(((ch_ciper-'A'-key)%26)+'A'); //解密
else
ch_plain=(((ch_ciper-'A'-key+26)%26)+'A'); //解密
ch_plain=tolower(ch_plain); //把大写明文转化为小写
fputc(ch_plain,fp_plain); //把明文写到文件文件plain
}
fclose(fp_ciper);
fclose(fp_plain);
printf("解密成功,密钥KEY=%d,明文已保存到文件中,谢谢使用!n",key);
}


java实现凯撒密码简单破解

import java.util.Scanner; /** * java实现凯撒密码简单破解 * 密码:凯撒密码 * 凯撒(Caesar)密码是一种基于字符替换的对称式加密方法,它是通过对26...
  • earbao
  • earbao
  • 2017年02月23日 17:02
  • 1558

“凯撒”密文的破解编程实现

凯撒密文的破解编程实现程序原理:1.Kaiser Recovery 字典智能  破解方法:根据字典文件(dict.txt),求出明文可最大满足字典内单词的加密key。  程序特色:使用字典,可在无人工...
  • freshare
  • freshare
  • 2006年09月19日 19:43
  • 1879

凯撒密文的破解编程实现

    由于它是一种对称密码体制,加解密的密钥是一样的,下边简单说明一下加解密加密过程:    密文:C=M+K  (mod 26)    解密过程:    明文:M=C-K  (mod 26)  ...
  • jianbisb
  • jianbisb
  • 2010年11月11日 12:23
  • 315

凯撒密码的自动化破解方法(适用于英文文本)

凯撒密码的自动化破解方法(适用于英文文本)凯撒密码凯撒加密是有记载的最古老的加密方法。原始的凯撒密码没有密钥,加密方式很原始,就是通过将字母表循环右移三位进行加密:a被D替代,b被E替代,…,x被A替...
  • wyf12138
  • wyf12138
  • 2017年06月26日 10:59
  • 2118

CTF 【每日一题 20160707】凯撒加密

来源:http://ctf.idf.cn/index.php?g=game&m=article&a=index&id=35题目:凯撒加密 大概就是这样吧,不能告诉你再多了。。 U8Y]:8KdJH...
  • hhhparty
  • hhhparty
  • 2016年07月08日 21:32
  • 3546

凯撒密码破译

Caesar:  AWPLDPPYNCJAEJZFCYLXPHTESESPDLXPVPJLYODPYOEZESPEL 信息安全课作业 破译该密码,并做破译出的明文指定的事情 凯撒密码是位移密码:...
  • u013046245
  • u013046245
  • 2014年03月03日 22:34
  • 1414

常用加密方法及破解思路

1、直接明文保存数据。2、使用对称加密算法来保存数据,比如DES、3DES、AES、RC2、RC4、RC5和Blowfish等算法。加解密使用相同的秘钥。==》获取密钥破解3、使用非对称加密算法来保存...
  • tiana0
  • tiana0
  • 2016年11月11日 11:40
  • 645

破解凯撒密码

http://blog.chinaunix.net/u1/41420/showart_322311.html 哈哈,贴一篇以前我的帖子来:)最近刚好在重新写各种密码算法,了解到密码学里面对密码的扩展性...
  • iltaek
  • iltaek
  • 2009年05月03日 17:31
  • 7254

密码算法(2)之凯撒密码

摘要 本文主要讲述凯撒密码。 1. 这是什么鬼? 凯撒密码是一种早期的简单的对称密码,密钥可以用来加密和解密。其又被称为移位密码——很形象! 2. 凯撒密码的原理 明文:={ 英文字符号串 }...
  • Canhui_WANG
  • Canhui_WANG
  • 2016年07月12日 14:00
  • 2911

[信息论]统计分析攻击凯撒密码实现

[注:本文仅供学习和参考,拷贝等引起的后果自负!] Caesar密码作为一种最为古老的对称加密体制,在古罗马的时候都已经很流行,它的基本思想是:通过把字母移动一定的位数来实现加密和解密。明文中的所有字...
  • u010536377
  • u010536377
  • 2015年04月30日 20:22
  • 1512
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:凯撒密文的破解编程实
举报原因:
原因补充:

(最多只允许输入30个字)