简介
加密与解密使用相同的**,对于加密算法本身是公开的。对称密码算法具有速度快、效率高的优势,适用于大批量数据加密的场合,是现代密码学主流方向之一。
现代对称密码体制的核心是置乱,它有两个目标:
1. 扩散(diffusion),打乱明文,使得明文和密文之间的统计关系尽量复杂,即从密文不能获得明文的统计特性。
2. 混淆(confusion),打乱明文,使从密文中不能获得**的任何统计特性。
**古典密码学,比较有效的方法是频率分析法。而现代对称密码算法使用分组密码、复式替换密码,使得最终得到的加密算法强度远高于每个简单替换密码的强度结果。
DES
1977年1月,(Data Encryption Standard)正式向社会公布。
DES加密标准的核心采用Feistel结构,明文分组长度为64位,初始**长度也是64位(实际用的是56位),循环轮数是16轮。
DES使用了S盒结构,S盒是一种非线性变换结构。
DES算法的入口参数有三个:Key、Data、Mode。其中Key为7个字节共56位,是DES算法的工作**;Data为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。
算法流程:
算法主要分为三步:
- 初始置换
- 经过16轮加密
- 逆转换
解密时也是通过这样3步。
DES的破译基本是暴力**。我国从有了自己的对称密码标准算法SM4后,国内基本使用自己的标准了。
3DES
三重数据加密算法。3DES是DES向AES过渡的一种加密算法,它使用“**包”(3个56位的**)对分组数据进行三次加解密,即以DES为基本模块,通过对DES加密算法的三次不同组合,构造出3DES加密算法。目前3DES普遍运用于电子货币,像网上钱包、虚拟钱包等,它能提高交易的安全性。
高级加密标准AES
1997年NIST建议撤销DES相关标准。 2002年5月26日,Rijndael成为高级加密标准(AES)。
AES在线工具:http://www.seacha.com/tools/aes.html
算法流程
AES加密过程涉及到4种操作:字节替代(SubBytes)、行移位(ShiftRows)、列混淆(MixColumns)和轮**加(AddRoundKey)。解密过程分别为对应的逆操作。由于每一步操作都是可逆的,按照相反的顺序进行解密即可恢复明文。加解密中每轮的**分别由初始**扩展得到。算法中16字节的明文、密文和轮**都以一个4x4的矩阵表示。
ECB模式(电子密码本模式:Electronic codebook)
ECB是最简单的块密码加密模式,加密前根据加密块大小(如AES为128位)分成若干块,之后将每块使用相同的**单独加密,解密同理。
CBC模式(密码分组链接:Cipher-block chaining)
CBC模式对于每个待加密的密码块在加密前会先与前一个密码块的密文异或然后再用加密器加密。第一个明文块与一个叫初始化向量的数据块异或。
CFB模式(密文反馈:Cipher feedback)
与ECB和CBC模式只能够加密块数据不同,CFB能够将块密文(Block Cipher)转换为流密文(Stream Cipher)。
OFB模式(输出反馈:Output feedback)
OFB是先用块加密器生成**流(Keystream),然后再将**流与明文流异或得到密文流,解密是先用块加密器生成**流,再将**流与密文流异或得到明文,由于异或操作的对称性所以加密和解密的流程是完全一样的。
Java Cipher的加密模式
| 算法/模式/填充 | 16字节加密后数据长度 | 不满16字节加密后长度 |
|---|---|---|
| AES/CBC/NoPadding | 16 | 不支持 |
| AES/CBC/PKCS5Padding | 32 | 16 |
| AES/CBC/ISO10126Padding | 32 | 16 |
| AES/CFB/NoPadding | 16 | 原始数据长度 |
| AES/CFB/PKCS5Padding | 32 | 16 |
| AES/CFB/ISO10126Padding | 32 | 16 |
| AES/ECB/NoPadding | 16 | 不支持 |
| AES/ECB/PKCS5Padding | 32 | 16 |
| AES/ECB/ISO10126Padding | 32 | 16 |
| AES/OFB/NoPadding | 16 | 原始数据长度 |
| AES/OFB/PKCS5Padding | 32 | 16 |
| AES/OFB/ISO10126Padding | 32 | 16 |
| AES/PCBC/NoPadding | 16 | 不支持 |
| AES/PCBC/PKCS5Padding | 32 | 16 |
| AES/PCBC/ISO10126Padding | 32 | 16 |
我国的对称密码标准SM4
分组密码算法的安全性主要在于S盒的设计,但国外的大多数密码算法并没有公开S盒的设计原理。
2012年3月21日 国家密码管理局将SM4 算法确定为国内官方公布的第一个商用密码算法。SM4算法的前身是用于我国无线局域网产品的加密算法SMS4算法。
与DES和AES一样,SM4也是分线密码算法,它的分组长度和**长度都是128 bits,加密算法和**扩展都采用32轮非线性迭代结构。它仍然具有分组密码的经典特征,加密算法与解密算法结构相同,只是轮**的使用顺序相反。
轻量级密码体制
- PRESENT
- MIBS
- TWIS
- PRINT cipher
- KLEIN
- LED
参考:http://blog.csdn.net/x_craft/article/details/4464498
http://www.mamicode.com/info-detail-514466.html
http://blog.csdn.net/charleslei/article/details/48710293