开始之前:只对秘钥加密方式做简单描述。
对称加密:
使用同一组秘钥对数据进行加密与解密。即加密解密都使用同一串密钥,
常见的对称加密的算法有:
DES: Data Encryption Standard, 56bits
3DES:
AES: Advanced (128, 192, 256bits)
Blowfish, Twofish
IDEA, RC6, CAST5
对称加密在加密时是把原始数据分割成固定大小的块,逐个对数据进行加密。
对称加密的优点是加密解密都使用同一个密钥,(单向加密解密使用不同的密钥公钥加密私钥解密),加密解密算法简单,所以执行加密与过程中相对非对称加密算法执行效率更高。但是对称加密出的数据体积更大。
但是由于对称加密的特性(只有一串钥匙),造成了秘钥分发困难,数据来源无法确认等状况。
对称的密钥交换:
1、 A: a,p 协商生成公开的整数a, 大素数p
B: a,p
2、 A:生成隐私数据 :x (x<p ),计算得出 a^x%p,发送给B
B:生成隐私数据 :y,计算得出 a^y%p,发送给A
3、 A:计算得出 [(a^y%p)^x] %p = a^xy%p, 生成为密钥
B:计算得出 [(a^x%p)^y] %p = a^xy%p,生成为密钥
“`
非对称加密:
非对称加密共有两把钥匙。分为公钥(public key)与私钥(private, secret key),通常情况下会将公钥分发出去,而私钥自己保留。从私钥中可以提取出公钥。
比较常见的加密算法有:RSA(加密,数字签名) ,DSA(数字签名) ,ELGamal
其中一把加密过的数据只能使用另外一把解开,
加密解密的秘钥并不一致,造成了算法相对复杂,所以在加密解密过程中会需要大量的时间。但是加密过的数据体积并不会扩大。所以此类密算法比较适合对较小的数据进行加密,
当加密的一部份目的是为了让对方对自己的身份进行验证时或者向对方声明自己的身份时,加密过程与加密产生的文件称为数字签名。验证身份的过程是及使用本地保存的公钥进行解密,解密成功则为此公钥对应的主机的数据。
散列算法:
算列算法的目的是将数据生成特定的特征码,使用散列算法生成的特征码的长度是固定的。但进行加密的数据可以是任意长度的(包括1bit),源数据产生细小的变换,生成的特征码将产生巨大的变化(雪崩效应),生成的特征码无法进行反推,即由特征码生成原始数据。散列算法多用于确定数据的完整性(对接收到的数据进行散列算计计算,生成特征码,与官方提供的特征码进行对比),散列算法又称哈希。
常见的散列算法:
md5: 128bits、 sha1: 160bits、 sha224
sha256、 sha384、 sha512
散列算法相关命令:
sha1sum:
简介 sha1sum 生成160位概要值,sha1sum可以从标准输入读取数据,也可以指定文件。
格式 sha1sum 选项 文件
sha1sum 文件 > 文件 :将文件的哈希值保存在文件中。
sha1sum 文件 >> 文件 :将文件的哈希值追加到文件中。
--check :校验
sha1sum --check 保存哈希值的文件。
例:sha1sum /dev/sr0
计算光盘的哈希值。
sha512sum
格式同上
加密实现:
对称密钥交换:发送方用对方的公钥加密一个对称密钥后发送给对方
非对称秘钥加密信息: 发送方使用接受方的公钥加密,接收方收到数据,使用自己的私钥进行解密。