导航:首页 > 文档加密 > 加密移位法

加密移位法

发布时间:2023-06-03 11:24:22

1. 对称密码体制的内容和典型算法

内容:在对称加密系统中,加密和解密采用相同的密钥。因为加解密密钥相同,需要通信的双方必须选择和保存他们共同的密钥,各方必须信任对方不会将密钥泄密出去,这样就可以实现数据的机密性和完整性。

算法:DES(Data Encryption Standard数据加密标准)算法及其变形Triple DES(三重DES),GDES(广义DES);欧洲的IDEA;日本的FEAL N、RC5等。

Triple DES使用两个独立的56bit密钥对交换的信息进行3次加密,从而使其有效长度达到112bit。RC2和RC4方法是RSA数据安全公司的对称加密专利算法,它们采用可变密钥长度的算法。通过规定不同的密钥长度,,C2和RC4能够提高或降低安全的程度。

(1)加密移位法扩展阅读:

密码体制的基本模式:

通常的密码体制采用移位法、代替法和代数方法来进行加密和解密的变换,可以采用一种或几种方法结合的方式作为数据变换的基本模式,下面举例说明:

移位法也叫置换法。移位法把明文中的字符重新排列,字符本身不变但其位置改变了。

例如最简单的例子:把文中的字母和字符倒过来写。

或将密文以固定长度来发送

5791ECNI SYLDIPAT DEVLOBES AHYTIRUC ESATAD**。

2. 密码那些事儿|(五)换个位置,面目全非

移位法和替代法大约5000年前出现,但直到9世纪才被阿拉伯人发明的频率分析法破解,中间隔了足足有4000年。在另一边的欧洲,实际上直到16世纪,都还没掌握这种破解方法。从这里我们也能感受到,阿拉伯文明曾经的辉煌。

移位法很简单。我举个例子,比如你的电话号码13911095871,把每个数字都在数列中往后加1,那么1变2,2变3,加密后就变成了24022106982。

13911095871叫做明文,24022106982则是它对应的密文。

字母的移位也是同样的道理,因为字母是遵循着abcdef……xyz的顺序排列,一共26个,看起来会比单纯的数字移位复杂一些,但本质上仍是一样的。

比如要对iron man加密,加密规则选择每个字母都向后移动3位, “iron man”就变成了“lurq pdq”。

没有经验的人乍看一下,完全就是乱码,实际上它只不过做了基础加密而已。这就是最基础的移位法。

大约在公元前700年左右,出现了用一种叫做Scytale的圆木棍来进行保密通信的方式。这种Scytale圆木棍也许是人类最早使用的文字加密解密工具,据说主要是古希腊城邦中的斯巴达人(Sparta)在使用它,所以又被叫做“斯巴达棒”。

相传雅典和斯巴达之间的伯罗奔尼撒战争中,斯巴达军队截获了一条写满杂乱无章的希腊字母的腰带,斯巴达将军在百思不得其解之际,胡乱将腰带缠到自己的宝剑上,从而误打误撞发现了其中隐藏的军机。这就是斯巴达密码棒的由来。

“斯巴达棒”的加密原理就是,把长带子状羊皮纸缠绕在圆木棍上,然后在上面写字;解下羊皮纸后,上面只有杂乱无章的字符,只有再次以同样的方式缠绕到同样粗细的棍子上,才能看出所写的内容。

比如像上图那样,在缠好的布带上写上“ YOU ARE IN DANGER”,然后再拆下来,布带上的文字顺序就变成了“YIONUDAARNEGER”,完全看不出任何头绪,这样就起到了加密的作用。

2100年前,古罗马的执政官和军队统帅恺撒(Julius Caesar,公元前100—前44)发明了一种把所有的字母按字母表顺序循环移位的文字加密方法。例如,当规定按字母表顺移3位的话,那么a就写成d,b写成e,c写成f,…,x写成a,y写成b,z写成c。单词Hello就写成了Khoor。如果不知道加密方法,谁也不会知道这个词的意思。解密时,只需把所有的字母逆移3位,就能读到正确的文本了。

上图就是根据恺撒加密法的原理而制作的字母循环移位盘。可以根据需要设定加密时移位的位数,以供加密或解密时快速查询。据说恺撒当年就是使用这种加密方法与手下的将军们通信的。

从密码学的角度来看,虽然恺撒加密法的规则很简单,然而,恺撒加密的思想对于西方古典密码学的发展有着很大影响。

事实上,直到第二次世界大战结束,西方所使用的加密方法原理大多与恺撒加密法类似,只是规则越来越复杂而已。

尽管移位法加密在西方得到了很普遍的应用,但在中国的史书上却很少记载,各位朋友可以想一想是为什么?

感兴趣的朋友们不妨在评论区一起聊一聊。

下一次,我们继续了解移位法和替代法的故事。

往期文章:

密码那些事儿|(四)隐藏的消息

密码那些事儿|(三)“风语者”——从未被破解的密码

密码那些事儿|(二)密码学发展的七个阶段

密码那些事儿|(一)无所不在的密码

本人是官方授权会员推广专员,点击 会员专属通道 成为会员,您将会获得钻奖励及诸多权益!

《钻奖励调整公告》

3. c语言 文件移位加密与解密

您说的这个方法,我没有操作过。 给文件加密,我使用的是超级加密3000. 超级加密3000采用国际上成熟的加密算法和安全快速的加密方法,可以有效保障数据安全! 具体操作方法: 1 下载安装超级加密3000。

4. 密码体制中,加密算法一般分为哪几种

古典加密算法分为替代算法和置换移位法。

1、替代算法

替代算法用明文的字母由其他字母或数字或符号所代替。最着名的替代算法是恺撒密码。凯撒密码的原理很简单,其实就是单字母替换。

例子:

明文:abcdefghijklmnopq

密文:defghijklmnopqrst

2、置换移位法

使用置换移位法的最着名的一种密码称为维吉尼亚密码。它以置换移位为基础的周期替换密码。

在维吉尼亚密码中,加密密钥是一个可被任意指定的字符串。加密密钥字符依次逐个作用于明文信息字符。明文信息长度往往会大于密钥字符串长度,而明文的每一个字符都需要有一个对应的密钥字符,因此密钥就需要不断循环,直至明文每一个字符都对应一个密钥字符。

其他常见的加密算法

1、DES算法是密码体制中的对称密码体制,把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位。

2、3DES是基于DES的对称算法,对一块数据用三个不同的密钥进行三次加密,强度更高。

3、RC2和RC4是对称算法,用变长密钥对大量数据进行加密,比DES快。

4、IDEA算法是在DES算法的基础上发展出来的,是作为迭代的分组密码实现的,使用128位的密钥和8个循环。

5、RSA是由RSA公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的,非对称算法。

6、DSA,即数字签名算法,是一种标准的 DSS(数字签名标准),严格来说不算加密算法。

7、AES是高级加密标准对称算法,是下一代的加密算法标准,速度快,安全级别高,在21世纪AES 标准的一个实现是 Rijndael算法。

5. C语言(文件的移位与加密解密)

这道题,并不难,只是楼主,没有说清,是就字母移位吗?
但是看你的例子,有不全是。
程序如下:
#include <stdio.h>
#include <stdlib.h>

FILE *source;//源文件
FILE *destination;//目标文件
int key;//密钥
char file[100];//文件名
void encryption()//加密
{
char ch;
printf("请输入要加密的文件名\n");
scanf("%s",file);
if((source=fopen(file,"r"))==NULL)
{
printf("无法打开文件!\n");
exit(0);
}
printf("请输入加密后的文件名\n");
scanf("%s",file);
if((destination=fopen(file,"w"))==NULL)
{
printf("无法创建文件!\n");
exit(0);
}
printf("请输入密钥\n");
scanf("%d",&key);
ch=fgetc(source);
while(ch!=EOF)
{
if(ch=='\n')
{
fputc(ch,destination);
ch=fgetc(source);
continue;
}
ch+=key;
fputc(ch,destination);
ch=fgetc(source);
}
fclose(source);
fclose(destination);
}

void decrypt()//解密
{
char ch;
printf("请输入要解密的文件名\n");
scanf("%s",file);
if((source=fopen(file,"r"))==NULL)
{
printf("无法打开文件!\n");
exit(0);
}
printf("请输入加密后的文件名\n");
scanf("%s",file);
if((destination=fopen(file,"w"))==NULL)
{
printf("无法创建文件!\n");
exit(0);
}
printf("请输入密钥\n");
scanf("%d",&key);
ch=fgetc(source);
while(ch!=EOF)
{
if(ch=='\n')
{
fputc(ch,destination);
ch=fgetc(source);
continue;
}
ch-=key;

fputc(ch,destination);
ch=fgetc(source);
}
fclose(source);
fclose(destination);
}

int main()//主函数提供菜单
{
int choice=0;
printf("******************\n");
printf("1 文件加密\n");
printf("2 文件解密\n");
printf("3 退出\n");
printf("******************\n");
printf("请输入1 2 3选择操作\n");
scanf("%d",&choice);

switch(choice)
{
case 1:encryption();break;
case 2:decrypt();break;
case 3:break;
}
return 0;
}

6. 密码学 - 古典加密

信息理论之父:克劳德 香农
论文《通信的数学理论》

如果没有信息加密,信息直接被中间人拦截查看、修改。

明文Plain text
密文Cipher text

加密Encryption/Encrypherment:将明文转化为密文
解密Decrytion/Decipherment:讲密文还原为明文

加密钥匙EK Encryption Key:加密时配合加密算法的数据
解密钥匙EK Encryption Key:解密时配合解密算法的数据

各个字符按照顺序进行n个字符错位的加密方法。
(凯撒是古罗马军事家政治家)

多次使用恺撒密码来加密并不能获得更大的安全性,因为使用偏移量A加密得到的结果再用偏移量B加密,等同于使用A+B的偏移量进行加密的结果。

凯撒密码最多只有25个密匙 +1到+25 安全强度几乎为0
(密钥为0或26时,明文在加密前后内容不变)

暴力枚举
根据密文,暴力列出25个密匙解密后的结果。

凯撒密码的例子是所有 单字母替代式密码 的典范,它只使用一个密码字母集。
我们也可以使用多字母替代式密码,使用的是多个密码字母集。
加密由两组或多组 密码字母集 组成,加密者可自由的选择然后用交替的密码字母集加密讯息。
(增加了解码的困难度,因为密码破解者必须找出这两组密码字母集)
另一个多字母替代式密码的例子“维吉尼亚密码”,将更难解密
(法语:Vigenère cypher),
它有26组不同用来加密的密码字母集。
每个密码字母集就是多移了一位的凯撒密码。
维吉尼亚方格(替换对照表):

维吉尼亚密码引入了密匙概念。
同一明文在密文中的每个对应,可能都不一样。

移位式密码,明文中出现的字母依然出现在密文中,只有字母顺序是依照一个定义明确的计划改变。
许多移位式密码是基于几何而设计的。一个简单的加密(也易被破解),可以将字母向右移1位。
例如,明文"Hello my name is Alice."
将变成"olleH ym eman si ecilA."
密码棒(英语:scytale)也是一种运用移位方法工具。


明文分组,按字符长度来分,每5个字母分一组。
并将各组内的字符的顺序进行替换。

具体例子
纵栏式移项密码
先选择一个关键字,把原来的讯息由左而右、由上而下依照关键字长度转写成长方形。接着把关键字的字母依照字母集顺序编号,例如A就是1、B就是2、C就是3等。例如,关键字是CAT,明文是THE SKY IS BLUE,则讯息应该转换成这样:
C A T
3 1 20
T H E
S K Y
I S B
L U E

最后把讯息以行为单位,依照编号大小调换位置。呈现的应该是A行为第一行、C行为第二行、T行为第三行。然后就可以把讯息"The sky is blue"转写成HKSUTSILEYBE。
另一种移位式密码是中国式密码(英语:Chinese cipher),移位的方法是将讯息的字母加密成由右而左、上下交替便成不规则的字母。范例,如果明文是:THE DOG RAN FAR,则中国式密码看起来像这样:
R R G T
A A O H
F N D E
密码文将写成:RRGT AAOH FNDE
绝大多数的移位式密码与这两个范例相类似,通常会重新排列字母的行或列,然后有系统的移动字母。其它一些例子包括Vertical Parallel和双移位式(英语:Double Transposition)密码。
更复杂的算法可以混合替代和移位成为积密码(proct cipher);现代资料区段密码像是DES反复位移和替代的几个步骤。

行数=栏数
明文,分为N栏(N行) 按照明文本来的顺序,竖着从上往下填。

【实例1】
明文123456
栏数2(行数2)
密文135246

135
246
拆成2行(2栏),竖着看密文——得到明文

【实例2】明文123456789abcdefghi 栏数9 (行数)--->密文1a2b3c4d5e6f7g8h9i
拆成9行竖着看密文.

1a
2b
3c
4d
5e
6f
7g
8h
9i

古典密码【栅栏密码安全度极低】组成栅栏的字母一般一两句话,30个字母。不会太多! 加解密都麻烦

是指研究字母或者字母组合在文本中出现的频率。应用频率分析可以破解古典密码。

工具
在线词频分析 http://textalyser.net/

7. 换位密码的加密方法

加密换位密码通过密钥只需要对明文进行加密,并且重新排列里面的字母位置即可。具体方法如下

1、基于二维数组移位的加密算法

给定一个二维数组的列数,即该二维数组每行可以保存的字符个数。再将明文字符串按行依次排列到该二维数组中。最后按列读出该二维数组中的字符,这样便可得到密文。

2、换位解密算法(基于二维数组移位的解密算法)

先给定一个二维数组的列数,即该二维数组每行可以保存的字符个数,并且这个数应该和加密算法中的一致。接下来将密文字符串按列一次性排列到该二维数组中。最后按行读出该二维数组中的字符即可。

3、换位加密算法

首先按照密钥排列顺序:将想要加密的明文加密,然后列出表格,找出对应的字母,就是密钥。然后对他们进行换位加密,就是将表格的第二行依据密钥排列顺序进行排序以便得到加密后的密文。

(7)加密移位法扩展阅读

数据加密技术的分类

1、专用密钥

又称为对称密钥或单密钥,加密和解密时使用同一个密钥,即同一个算法。单密钥是最简单方式,通信双方必须交换彼此密钥,当需给对方发信息时,用自己的加密密钥进行加密,而在接收方收到数据后,用对方所给的密钥进行解密。当一个文本要加密传送时,该文本用密钥加密构成密文,密文在信道上传送,收到密文后用同一个密钥将密文解出来,形成普通文体供阅读。

2、对称密钥

对称密钥是最古老的,一般说“密电码”采用的就是对称密钥。由于对称密钥运算量小、速度快、安全强度高,因而如今仍广泛被采用。它将数据分成长度为64位的数据块,其中8位用作奇偶校验,剩余的56位作为密码的长度。首先将原文进行置换,得到64位的杂乱无章的数据组,然后将其分成均等两段;第三步用加密函数进行变换,并在给定的密钥参数条件下,进行多次迭代而得到加密密文。

3、公开密钥

又称非对称密钥,加密和解密时使用不同的密钥,即不同的算法,虽然两者之间存在一定的关系,但不可能轻易地从一个推导出另一个。非对称密钥由于两个密钥(加密密钥和解密密钥)各不相同,因而可以将一个密钥公开,而将另一个密钥保密,同样可以起到加密的作用。公开密钥的加密机制虽提供了良好的保密性,但难以鉴别发送者,即任何得到公开密钥的人都可以生成和发送报文。

4、非对称加密技术

数字签名一般采用非对称加密技术(如RSA),通过对整个明文进行某种变换,得到一个值,作为核实签名。接收者使用发送者的公开密钥对签名进行解密运算,如其结果为明文,则签名有效,证明对方的身份是真实的。数字签名不同于手写签字,数字签名随文本的变化而变化,手写签字反映某个人个性特征,是不变的;数字签名与文本信息是不可分割的,而手写签字是附加在文本之后的,与文本信息是分离的。

8. 位加密(或移位加密)代码怎么样写

char getkey(char txt) { char e = "dfwkekgodsfdfwkdsf";//一定位数的字符串,比如32位 int ctr=0; char tmp = ''; for (int i=0;i<strlen(txt);i++) { if (ctr == strlen(e)) ctr=0;//当ctr长度为上面 e 的长度时,重新置为0 tmp += substr(txt,i,i+1) ^ substr(e,ctr,ctr+1);//将 txt的第i个字符 与 e 的第 ctr个字符 异或运算 并添加入 tmp字串中 ctr++;// ctr 自增 } return tmp;//返回得到的tmp字串 } char encrypt(txt) { srand((double)microtime()*1000000);//设置时间种子 char encrypt_key = md5(rand(0,32000));//得到32为加密字串; 这里目的就是每次运行时得到的字串都不一样 int ctr=0; int tmp = ""; for (int i=0;i<strlen(txt);i++) { if (ctr==strlen(encrypt_key)) ctr=0; tmp += substr(encrypt_key,ctr,ctr+1) . (substr(txt,i,i+1) ^ substr(encrypt_key,ctr,ctr+1)); ctr++; } return getkey(tmp); } char decrypt(txt) { char txt = getkey(txt); char tmp = ""; for (int i=0;i<strlen(txt);i++) { md5st = substr(txt,i,i+1); i++; tmp += (substr(txt,i,i+1) ^ md5st); } return tmp; }

9. 古典加密算法有哪些 古典加密算法

世界上最早的一种密码产生于公元前两世纪。是由一位希腊人提出的,人们称之为
棋盘密码,原因为该密码将26个字母放在5×5的方格里,i,j放在一个格子里,具体情
况如下表所示
1 2 3 4 5
1 a b c 搜索d e
2 f g h i,j k
3 l m n o p
4 q r s t u
5 v w x y z
这样,每个字母就对应了由两个数构成的字符αβ,α是该字母所在行的标号,β是列
标号。如c对应13,s对应43等。如果接收到密文为
43 15 13 45 42 15 32 15 43 43 11 22 15
则对应的明文即为secure message。
另一种具有代表性的密码是凯撒密码。它是将英文字母向前推移k位。如k=5,则密
文字母与明文与如下对应关系
a b c d e f g h i j k l m n o p q r s t u v w x y z
F G H I J K L M N O P Q R S T U V W X Y Z A B C D E
于是对应于明文secure message,可得密文为XJHZWJRJXXFLJ。此时,k就是密钥。为了
传送方便,可以将26个字母一一对应于从0到25的26个整数。如a对1,b对2,……,y对
25,z对0。这样凯撒加密变换实际就是一个同余式
c≡m+k mod 26
其中m是明文字母对应的数,c是与明文对应的密文的数。
随后,为了提高凯撒密码的安全性,人们对凯撒密码进行了改进。选取k,b作为两
个参数,其中要求k与26互素,明文与密文的对应规则为
c≡km+b mod 26
可以看出,k=1就是前面提到的凯撒密码。于是这种加密变换是凯撒野加密变换的
推广,并且其保密程度也比凯撒密码高。
以上介绍的密码体制都属于单表置换。意思是一个明文字母对应的密文字母是确定
的。根据这个特点,利用频率分析可以对这样的密码体制进行有效的攻击。方法是在大
量的书籍、报刊和文章中,统计各个字母出现的频率。例如,e出现的次数最多,其次
是t,a,o,I等等。破译者通过对密文中各字母出现频率的分析,结合自然语言的字母频
率特征,就可以将该密码体制破译。
鉴于单表置换密码体制具有这样的攻击弱点,人们自然就会想办法对其进行改进,
来弥补这个弱点,增加抗攻击能力。法国密码学家维吉尼亚于1586年提出一个种多表式
密码,即一个明文字母可以表示成多个密文字母。其原理是这样的:给出密钥
K=k[1]k[2]…k[n],若明文为M=m[1]m[2]…m[n],则对应的密文为C=c[1]c[2]…c[n]。
其中C[i]=(m[i]+k[i]) mod 26。例如,若明文M为data security,密钥k=best,将明
文分解为长为4的序列data security,对每4个字母,用k=best加密后得密文为
C=EELT TIUN SMLR
从中可以看出,当K为一个字母时,就是凯撒密码。而且容易看出,K越长,保密程
度就越高。显然这样的密码体制比单表置换密码体制具有更强的抗攻击能力,而且其加
密、解密均可用所谓的维吉尼亚方阵来进行,从而在操作上简单易行。该密码可用所谓
的维吉尼亚方阵来进行,从而在操作上简单易行。该密码曾被认为是三百年内破译不了
的密码,因而这种密码在今天仍被使用着。
古典密码的发展已有悠久的历史了。尽管这些密码大都比较简单,但它在今天仍有
其参考价值。世界上最早的一种密码产生于公元前两世纪。是由一位希腊人提出的,人们称之为
棋盘密码,原因为该密码将26个字母放在5×5的方格里,i,j放在一个格子里,具体情
况如下表所示
1 2 3 4 5
1 a b c 搜索d e
2 f g h i,j k
3 l m n o p
4 q r s t u
5 v w x y z
这样,每个字母就对应了由两个数构成的字符αβ,α是该字母所在行的标号,β是列
标号。如c对应13,s对应43等。如果接收到密文为
43 15 13 45 42 15 32 15 43 43 11 22 15
则对应的明文即为secure message。
另一种具有代表性的密码是凯撒密码。它是将英文字母向前推移k位。如k=5,则密
文字母与明文与如下对应关系
a b c d e f g h i j k l m n o p q r s t u v w x y z
F G H I J K L M N O P Q R S T U V W X Y Z A B C D E
于是对应于明文secure message,可得密文为XJHZWJRJXXFLJ。此时,k就是密钥。为了
传送方便,可以将26个字母一一对应于从0到25的26个整数。如a对1,b对2,……,y对
25,z对0。这样凯撒加密变换实际就是一个同余式
c≡m+k mod 26
其中m是明文字母对应的数,c是与明文对应的密文的数。
随后,为了提高凯撒密码的安全性,人们对凯撒密码进行了改进。选取k,b作为两
个参数,其中要求k与26互素,明文与密文的对应规则为
c≡km+b mod 26
可以看出,k=1就是前面提到的凯撒密码。于是这种加密变换是凯撒野加密变换的
推广,并且其保密程度也比凯撒密码高。
以上介绍的密码体制都属于单表置换。意思是一个明文字母对应的密文字母是确定
的。根据这个特点,利用频率分析可以对这样的密码体制进行有效的攻击。方法是在大
量的书籍、报刊和文章中,统计各个字母出现的频率。例如,e出现的次数最多,其次
是t,a,o,I等等。破译者通过对密文中各字母出现频率的分析,结合自然语言的字母频
率特征,就可以将该密码体制破译。
鉴于单表置换密码体制具有这样的攻击弱点,人们自然就会想办法对其进行改进,
来弥补这个弱点,增加抗攻击能力。法国密码学家维吉尼亚于1586年提出一个种多表式
密码,即一个明文字母可以表示成多个密文字母。其原理是这样的:给出密钥
K=k[1]k[2]…k[n],若明文为M=m[1]m[2]…m[n],则对应的密文为C=c[1]c[2]…c[n]。
其中C[i]=(m[i]+k[i]) mod 26。例如,若明文M为data security,密钥k=best,将明
文分解为长为4的序列data security,对每4个字母,用k=best加密后得密文为
C=EELT TIUN SMLR
从中可以看出,当K为一个字母时,就是凯撒密码。而且容易看出,K越长,保密程
度就越高。显然这样的密码体制比单表置换密码体制具有更强的抗攻击能力,而且其加
密、解密均可用所谓的维吉尼亚方阵来进行,从而在操作上简单易行。该密码可用所谓
的维吉尼亚方阵来进行,从而在操作上简单易行。该密码曾被认为是三百年内破译不了
的密码,因而这种密码在今天仍被使用着。
古典密码的发展已有悠久的历史了。尽管这些密码大都比较简单,但它在今天仍有
其参考价值。

阅读全文

与加密移位法相关的资料

热点内容
宏杰加密时电脑关机 浏览:388
自己写单片机编译器 浏览:598
单片机按键闪烁 浏览:380
为什么icloud总是显连接服务器失败 浏览:888
如何设置域控服务器 浏览:738
想在上海租房子什么app好 浏览:184
编译程序各部分是必不可少的吗 浏览:885
编程不超过十行 浏览:763
数电编译器的作用 浏览:337
时间算法与现在有什么区别 浏览:162
7zip解压后没文件夹 浏览:902
为什么安卓送玫瑰ios收不到 浏览:8
美篇文章加密是什么意思 浏览:82
ilasm编译dll 浏览:38
呼吸灯单片机程序 浏览:954
linux域socket 浏览:250
qq分身怎么样才能加密 浏览:457
windows打开linux 浏览:999
新建文件夹为什么不能发送微信 浏览:604
交警app怎么绑定本人几辆车 浏览:989