对称加密原理概述

对称加密

对称加密也被称为常规加密、私钥或单钥加密,在公钥加密开发之前,是唯一被使用的加密类型,现在,它仍然属于最广泛的两种加密类型之一。

对称加密原理

一个对称加密方案由5部分组成
1. 明文(plaintext):原始消息,作为算法的输入;
2. 加密算法(encryption algorithm):对明文进行各种替换和转换;
3. 密钥(secret key):密钥也是加密算法的输入之一,算法进行的具体替换和转换取决于密钥;
4. 密文(ciphertext):已被加密算法打乱的消息输出;
5. 解密算法(decryption algorithm):本质是加密算法的反向执行,使用密文和同一个密钥作为输入产生原始明文。

所有的加密算法都基于两个通用法则:替换——明文的每一个元素(比特、字母、一组比特或一组字母)被映射成另外一个元素;排列组合——明文的元素都被再排列。这些操作最基本的要求是没有信息丢失(即所有操作都可逆)。

对称分组加密结构

分组加密将待处理的明文消息分成固定大小长度的分组明文输入,对每个明文分组进行处理并产生同等大小的密文分组输出。

Feistel密码结构是被很多主流对称分组加密算法使用的密码结构,其中包括经典的DES算法盒三重DES算法。

Feistel处理一个明文分组的流程如下:
1. 将明文分组分成初始的左右两个半部分LE0和RE0;
2. 用K密钥通过子密钥生成算法获取本轮子密钥K0;
3. 将RE0和K0作为输入送入轮函数F0,产生与RE0相同位数的输出;
4. 再将轮函数输出与LE0做异或操作得到RE1;最后,将RE0作为LE1,合并LE1RE1,即产生了第一轮的输出;
5. 循环第1~4步,一般采用16轮处理。

图 1 Feistel 结构流程图
总结以上算法描述的公式如下,其中F为轮函数,Ki为轮密钥,LEi REi为本轮输入,LEi+1 REi+1为本轮输出:
LEi+1=REi
REi+1=LEi⊕F(REi+Ki+1)

猜你喜欢

转载自blog.csdn.net/u012470144/article/details/81156793