【Java小工匠聊密码学】--对称加密--概述
1、什么是对称加密
对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文“原始数据”和“加密密钥“一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。
2、对称密码特点
(1)加密密钥与解密密钥相同,加密算法与解密算法互逆
(2)算法公开、计算量小、加密速度快、加密效率高。
(3)双方使用相同的密钥,安全性得不到保障。
3、对称密码工作模式
(1)ECB:电子密码本
最基本的加密模式,也就是通常理解的加密,相同的明文将永远加密成相同的密文,无初始向量,容易受到密码本重放攻击,一般情况下很少用。
(2)CBC:密码连接
明文被加密前要与前面的密文进行异或运算后再加密,因此只要选择不同的初始向量,相同的密文加密后会形成不同的密文,这是目前应用最广泛的模式。CBC加密后的密文是上下文相关的,但明文的错误不会传递到后续分组,但如果一个分组丢失,后面的分组将全部作废(同步错误)。
(3)CFB:密文反馈
类似于自同步序列密码,分组加密后,按8位分组将密文和明文进行移位异或后得到输出同时反馈回移位寄存器,优点最小可以按字节进行加解密,也可以是n位的,CFB也是上下文相关的,CFB模式下,明文的一个错误会影响后面的密文(错误扩散)。
(4)OFB:输出反馈
将分组密码作为同步序列密码运行,和CFB相似,不过OFB用的是前一个n位密文输出分组反馈回移位寄存器,OFB没有错误扩散问题。
(5) CTR : 计数器
计算器模式不常见,在CTR模式中, 有一个自增的算子,这个算子用密钥加密之后的输出和明文异或的结果得到密文,相当于一次一密。这种加密方式简单快速,安全可靠,而且可以并行加密,但是在计算器不能维持很长的情况下,密钥只能使用一次。
4、对称密码填充方式
(1) NoPadding
(2) PKCS5Padding
(3) ISO 10126
5、常用对称加密算法
(1)DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合;
(2)3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高;
(3)AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高,目前 AES 标准的一个实现是 Rijndael 算法;
如果读完觉得有收获的话,欢迎点赞、关注、加公众号【小工匠技术圈】
个人公众号,欢迎关注,查阅更多精彩历史!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
前端入门教程(二)Web前端与HTML简介
一 web1.0时代的网页制作 网页制作是web1.0时代的产物,那个时候的网页主要是静态网页,所谓的静态网页就是没有与用户进行交互而仅仅供读者浏览的网页,我们当时称为“牛皮癣”网页。 例如一篇QQ日志、一篇博文等展示性文章。在web1.0时代,用户能做的唯一事情就是浏览这个网站的文字图片内容,这时用户也不能像现在在大多数网站都可以评论交流(缺乏交互性)。 相信可能大多数人都听过“网页三剑客 Dreamweaver+Fireworks+Flash”吧,2010这个组合就是web1.0时代额产物,我在2010年以前还是在使用三剑客做网页设计的 二 web2.0时代的前端开发 “前端开发”是从“网页制作”演变而来的。 从2005年开始,互联网进入web 2.0时代,由单一的文字和图片组成的静态网页已经不能满足用户的需求,用户需要更好的体验。 在web 2.0时代,网页有静态网页和动态网页。 所谓动态网页,就是用户不仅仅可以浏览网页,还可以与服务器进行交互。举个例子,你登陆新浪微博,要输入账号密码,这个时候就需要服务器对你的账号和密码进行验证通过才行。 web2.0时代的网页不仅包含炫丽的动...
- 下一篇
【Java小工匠聊密码学】--对称加密--DES
1、 DES算法 DES对称加密,对称加密,是一种比较传统的加密方式,其加密运算、解密运算使用的是同样的密钥,信息的发送者和信息的接收者在进行信息的传输与处理时,必须共同持有该密码(称为对称密码),是一对称加密算法。 2、DES算法特点 密钥长度56位+8位校验位,生命周期短。 3、DES算法实现 3.1 DES的JDK实现 (1)工作模式 ECB、CBC、PCBC、CTR、CTS、CFB、CFB8-CFB128、OFB、OFB8-OFB128. (2) 填充模式 NoPadding、PKCS5Padding、ISO10126Padding (3) 代码实现 package lzf.cipher.jdk; import java.nio.charset.Charset; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; /** * @author Java小工匠 *...
相关文章
文章评论
共有0条评论来说两句吧...