1. ECB(Electronic Codebook Book, 电码本模式)
将明文分成若干小段,然后对每小段进行加密
2. CBC(Cipher Block Chaining, 密码分组链接模式)
先将明文切分成若干小段,然后每一小段与初始块或者上一段的密文进行异或运算后,再与秘钥进行加密
对称加密算法
对称加密指的是加密和解密使用同一个秘钥,所以叫做对称加密、
对称加密只有一个秘钥,作为私钥。具体的算法有:DES、3DES、TDEA,Blowfish,RC5,IDEA。常用的有:DES、AES等
优点:算法公开,计算量小、加密速度快、加密效率高
缺点:秘钥的管理和分发非常困难,不够安全
加密的过程我们可以理解为如下:
- .加密:原文+秘钥 = 密文
- 解密:密文-秘钥 = 原文
DES
DES 加密算法是一种分组密码,以 64 位为分组对数据加密,它的密钥长度是 56 位,加密解密用同一算法。DES 加密算法是对密钥进行保密,而公开算法,包括加密和解密算法。这样,只有掌握了和发送方相同密钥的人才能解读由 DES 加密算法加密的密文数据。因此,破译 DES 加密算法实际上就是搜索密钥的编码。对于 56 位长度的密钥来说,如果用穷举法来进行搜索的话,其运算次数为 2 的 56 次方。
在 Java 中用 DES 加密有一个特殊的地方:秘钥设置的长度必须大于等于 8。
秘钥设置的长度如果大于 8 的话,那么只会取前 8 个字节作为秘钥。
AES
AES 加密算法是密码学中的高级加密标准,该加密算法采用对称分组密码体制,密钥长度的最少支持为 128、192、256,分组长度 128 位,算法应易于各种硬件和软件实现。这种加密算法是美国联邦政府采用的区块加密标准,AES 标准用来替代原先的 DES,已经被多方分析且广为全世界所使用。
非对称假面算法
非对称加密算法中加密和解密用的不是同一个秘钥,所以叫作非对称加密算法。在非对称加密算法每个用户都有两把钥匙,一把公钥一把私钥。公钥是对外发布的,所有人都看的到所有人的公钥,私钥是自己保存,每个人都只知道自己的私钥而不知道别人的
加密和解密
用该用户的公钥加密后只能该用户的私钥才能解密。这种情况下,公钥是用来加密信息的,确保只有特定的人(用谁的公钥就是谁)才能解密该信息。所以这种我们称之为加密和解密。
加签和验签
还有第二种情况,公钥是用来解密信息的,确保让别人知道这条信息是真的由我发布的,是完整正确的。接收者由此可知这条信息确实来自于拥有私钥的某人,这被称作数字签名,公钥的形式就是数字证书。所以这种我们称之为加签和验签。
我们在开发过程中经常使用的非对称加密算法就是 RSA 算法。
摘要算法
数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名、数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密。数据摘要算法也被称为哈希(Hash)算法或散列算法。
有哪些具体的消息摘要算法?
CRC8、CRC16、CRC32:CRC(Cyclic Redundancy Check,循环冗余校验)算法出现时间较长,应用也十分广泛,尤其是通讯领域。现在应用最多的就是 CRC32 算法,它产生一个 4 字节(32位)的校验值,一般是以 8 位十六进制数,如FA 12 CD 45等。CRC 算法的优点在于简便、速度快。严格的来说,CRC 更应该被称为数据校验算法,但其功能与数据摘要算法类似,因此也作为测试的可选算法。
MD2 、MD4、MD5:这是应用非常广泛的一个算法家族,尤其是 MD5(Message-Digest Algorithm 5,消息摘要算法版本5),它由 MD2、MD3、MD4 发展而来,由 Ron Rivest(RSA公司)在 1992 年提出,目前被广泛应用于数据完整性校验、数据(消息)摘要、数据加密等。MD2、MD4、MD5 都产生 16 字节(128位)的校验值,一般用32位十六进制数表示。MD2的算法较慢但相对安全,MD4 速度很快,但安全性下降,MD5 比 MD4 更安全、速度更快
SHA1、SHA256、SHA384、SHA512:SHA(Secure Hash Algorithm)是由美国专门制定密码算法的标准机构——美国国家标准技术研究院(NIST)制定的,SHA系列算法的摘要长度分别为:SHA 为 20 字节(160位)、SHA256 为 32 字节(256位)、 SHA384 为 48 字节(384位)、SHA512 为 64 字节(512位),由于它产生的数据摘要的长度更长,因此更难以发生碰撞,因此也更为安全,它是未来数据摘要算法的发展方向。由于SHA系列算法的数据摘要长度较长,因此其运算速度与 MD5 相比,也相对较慢。
RIPEMD、PANAMA、TIGER、ADLER32 等:RIPEMD 是 Hans Dobbertin 等 3 人在对 MD4、MD5 缺陷分析基础上,于 1996 年提出来的,有 4 个标准 128、160、256 和 320,其对应输出长度分别为 16 字节、20 字节、32 字节和 40 字节。TIGER 由 Ross 在 1995 年提出。Tiger 号称是最快的 Hash 算法,专门为 64位机器做了优化。