古典加密算法分为替代算法和置换移位法。
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算法。
⑵ 换位密码的加密方法
加密换位密码通过密钥只需要对明文进行加密,并且重新排列里面的字母位置即可。具体方法如下
1、基于二维数组移位的加密算法
给定一个二维数组的列数,即该二维数组每行可以保存的字符个数。再将明文字符串按行依次排列到该二维数组中。最后按列读出该二维数组中的字符,这样便可得到密文。
2、换位解密算法(基于二维数组移位的解密算法)
先给定一个二维数组的列数,即该二维数组每行可以保存的字符个数,并且这个数应该和加密算法中的一致。接下来将密文字符串按列一次性排列到该二维数组中。最后按行读出该二维数组中的字符即可。
3、换位加密算法
首先按照密钥排列顺序:将想要加密的明文加密,然后列出表格,找出对应的字母,就是密钥。然后对他们进行换位加密,就是将表格的第二行依据密钥排列顺序进行排序以便得到加密后的密文。
(2)现有某移位加密算法扩展阅读
数据加密技术的分类
1、专用密钥
又称为对称密钥或单密钥,加密和解密时使用同一个密钥,即同一个算法。单密钥是最简单方式,通信双方必须交换彼此密钥,当需给对方发信息时,用自己的加密密钥进行加密,而在接收方收到数据后,用对方所给的密钥进行解密。当一个文本要加密传送时,该文本用密钥加密构成密文,密文在信道上传送,收到密文后用同一个密钥将密文解出来,形成普通文体供阅读。
2、对称密钥
对称密钥是最古老的,一般说“密电码”采用的就是对称密钥。由于对称密钥运算量小、速度快、安全强度高,因而如今仍广泛被采用。它将数据分成长度为64位的数据块,其中8位用作奇偶校验,剩余的56位作为密码的长度。首先将原文进行置换,得到64位的杂乱无章的数据组,然后将其分成均等两段;第三步用加密函数进行变换,并在给定的密钥参数条件下,进行多次迭代而得到加密密文。
3、公开密钥
又称非对称密钥,加密和解密时使用不同的密钥,即不同的算法,虽然两者之间存在一定的关系,但不可能轻易地从一个推导出另一个。非对称密钥由于两个密钥(加密密钥和解密密钥)各不相同,因而可以将一个密钥公开,而将另一个密钥保密,同样可以起到加密的作用。公开密钥的加密机制虽提供了良好的保密性,但难以鉴别发送者,即任何得到公开密钥的人都可以生成和发送报文。
4、非对称加密技术
数字签名一般采用非对称加密技术(如RSA),通过对整个明文进行某种变换,得到一个值,作为核实签名。接收者使用发送者的公开密钥对签名进行解密运算,如其结果为明文,则签名有效,证明对方的身份是真实的。数字签名不同于手写签字,数字签名随文本的变化而变化,手写签字反映某个人个性特征,是不变的;数字签名与文本信息是不可分割的,而手写签字是附加在文本之后的,与文本信息是分离的。
⑶ 文件移位加密与解密。
你要干什么!
⑷ C语言凯撒加密是一种移位替代加密算法,即将字母表A-Z向左移位,然后用移位后的字母表替原来的明文得到密文
#include<iostream>
#include<string>
usingnamespacestd;
intmain()
{
stringcode;//储存初始字符串
stringd_code;//加密后的字符串
inti;
intn;//移位的个数
cout<<"Enterthestring"<<endl;
cin>>code;
cout<<"howmanystepdoyouwanttomove?"<<endl;
cin>>n;
for(i=0;i<code.size();++i)
{
if(int(code[i])>97)
{
if(int(code[i])+n>122)
d_code[i]=int(code[i])+n-26;
else
d_code[i]=int(code[i])+n;
}
elseif(int(code[i])+n>90)
d_code[i]=char(int(code[i])+n-26);
else
d_code[i]=char(int(code[i]+n));
}
for(i=0;i<code.size();++i)
{
cout<<d_code[i];
}
cout<<endl;
cout<<"Code="<<code<<endl;
return0;
}
⑸ 加密算法总结
iOS加密相关算法框架:CommonCrypto
明文: 明文指的是未被加密过的原始数据。
密文: 明文被某种加密算法加密之后,会变成密文,从而确保原始数据的安全。密文也可以被解密,得到原始的明文。
密钥: 密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。密钥分为对称密钥与非对称密钥,分别应用在对称加密和非对称加密上。
对称加密又叫做私钥加密 ,即信息的发送方和接收方使用 同一个密钥 去加密和解密数据。
对称加密的特点是 算法公开、计算量少、加密和解密速度快效率高 ,适合于对大数据量进行加密;
缺点是 双方使用相同的密钥、密钥传输的过程不安全、易被破解、因此为了保密其密钥需要经常更换
常见的对称加密算法有 AES、DES 、3DES、TDEA、Blowfish、RC5和IDEA。【不过DES被认为是不安全的】
加密过程:明文 + 加密算法 + 私钥 => 密文
解密过程: 密文 + 解密算法 + 私钥 => 明文
对称加密中用到的密钥叫做 私钥 ,私钥表示个人私有的密钥,即该密钥不能被泄露。
其 加密过程中的私钥与解密过程中用到的私钥是同一个密钥 ,这也是称加密之所以称之为“对称”的原因。由于对称加密的 算法是公开 的,所以一旦私钥被泄露,那么密文就很容易被破解,所以对称加密的 缺点是密钥安全管理困难 。
3DES是DES加密算法的一种模式,它使用3条64位的密钥对数据进行三次加密。是DES像AES过渡的加密算法,是DES的一个更安全的变形,它以DES为基本模块,通过组合分组方法设计出分组加密算法。
非对称加密也叫做公钥加密 。非对称加密与对称加密相比,其安全性更好。对称加密的通信双方使用相同的密钥,如果一方的密钥遭泄露,那么整个通信就会被破解。而 非对称加密使用一对密钥,即公钥和私钥 , 且二者成对出现 。私钥被自己保存,不能对外泄露。公钥指的是公共的密钥,任何人都可以获得该密钥。用公钥或私钥中的任何一个进行加密,用另一个进行解密。两种使用方法:
哈希算法加密是通过哈希算法对数据加密、加密后的结果不可逆,即加密后不能在解密。
SHA加密,安全哈希算法,主要适用于数字签名签名标准( DSS )里面定义的数字签名算法( DSA )。对于长度小于 2^64 位的消息, SHA1 会产生一个160位的消息摘要。当接收消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。当然除了 SHA1 还有 SHA256 以及 SHA512 等。
HMAC加密,给定一个密钥,对明文加密,做两次“散列”,得到的结果还是32位字符串。
就是或、与、异或、或者加上某个数据
特点:可逆、原始数据和加密数据长度保持一致