前言
hi,大家好呀,信息安全作为当前社会中比较重要的一个课题,已经覆盖了人们生活的方方面面,虽然有时候我们可能并没有意识到,其实信息安全防护已经在背后默默的保护我们的信息安全了。例如,当你在互联网上浏览网站时;当你准备注册或者登陆一个网站,需要输入密码时;当你在购物网站买商品进行支付时;当你到银行取钱时…
可以说信息安全是关系国家、城市信息、行业用户、百姓利益的关键问题,尤其是数据安全,身份隐私等信息的安全对于每个人都很重要。互联网最初,大家的安全意识还没有那么高,很多信息都是明文传输,甚至数据库中也是明文传输,这就带来了很多安全问题,比如网站被劫持,数据库被拖库,个人密码遭泄露等,已经给企业和社会都带来了非常高的威胁性。
今天我们就带大家一起开启我们的本次安全旅行,给大家详细深入的讲解一下加密算法的前世今生。本次安全之旅会带大家深入的了解一下我们在开发中常用到的一些加密算法及实现方式(本次示例均使用Java语言实现),希望能增强大家对加密算法的了解和认识,并能根据业务场景熟练应用。如果大家喜欢这个系列的文章,欢迎大家点赞、分享,在这里谢谢大家的支持啦!
基础概念
密码学的发展已经很久了,早在古希腊时期,人类就发明了置换密码。二战期间,德国军方启用“恩尼格玛”密码机,密码学在战争中起着非常重要的作用。在1997年,美国国家标准局公布实施了“美国数据加密标准(DES)”,民间力量开始全面介入密码学的研究和应用中,采用的加密算法有 DES、RSA、SHA 等。
在密码学中有一些基础的概念,在我们正式开始学习之前,我们先从了解一下密码学中的相关概念。
- 明文:指没有经过加密的信息或数据,通常可以直接识别出,例如个人信息、密码等。由于没有经过加密,明文很容易被识别与破解,因此在传输明文之前必须进行加密处理。
- 密文:将明文通过加密算法按照一定规则进行加密之后,明文就会变成密文,通常为一堆无序字符,密文的形式复杂难以识别及理解。
- 密钥:加密算法中使用的加密参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。密钥分为对称密钥与非对称密钥。
- 加密:将明文通过加密算法变成密文的过程。
- 对称加密:通信双方同时掌握一个密钥,加密解密都是由一个密钥完成的(即加密密钥等于解密密钥,加解密密钥可以相互推倒出来)。双方通信前共同拟定一个密钥,不对第三方公开。
- 分组加密:分组密码是将明文分成固定长度的组,每一组都采用同一密钥和算法进行加密,输出也是固定长度的密文。
- 解密:将密文通过加密算法解密