asp网站开发教程pdf,wordpress要装iis吗,有关商业网站的风格特征,wordpress taxonomy前言
hi#xff0c;大家好呀#xff0c;信息安全作为当前社会中比较重要的一个课题#xff0c;已经覆盖了人们生活的方方面面#xff0c;虽然有时候我们可能并没有意识到#xff0c;其实信息安全防护已经在背后默默的保护我们的信息安全了。例如#xff0c;当你在互联网…前言
hi大家好呀信息安全作为当前社会中比较重要的一个课题已经覆盖了人们生活的方方面面虽然有时候我们可能并没有意识到其实信息安全防护已经在背后默默的保护我们的信息安全了。例如当你在互联网上浏览网站时当你准备注册或者登陆一个网站需要输入密码时当你在购物网站买商品进行支付时当你到银行取钱时…
可以说信息安全是关系国家、城市信息、行业用户、百姓利益的关键问题尤其是数据安全身份隐私等信息的安全对于每个人都很重要。互联网最初大家的安全意识还没有那么高很多信息都是明文传输甚至数据库中也是明文传输这就带来了很多安全问题比如网站被劫持数据库被拖库个人密码遭泄露等已经给企业和社会都带来了非常高的威胁性。
今天我们就带大家一起开启我们的本次安全旅行给大家详细深入的讲解一下加密算法的前世今生。本次安全之旅会带大家深入的了解一下我们在开发中常用到的一些加密算法及实现方式本次示例均使用Java语言实现希望能增强大家对加密算法的了解和认识并能根据业务场景熟练应用。如果大家喜欢这个系列的文章欢迎大家点赞、分享在这里谢谢大家的支持啦
基础概念
密码学的发展已经很久了早在古希腊时期人类就发明了置换密码。二战期间德国军方启用“恩尼格玛”密码机密码学在战争中起着非常重要的作用。在1997年美国国家标准局公布实施了“美国数据加密标准DES”民间力量开始全面介入密码学的研究和应用中采用的加密算法有 DES、RSA、SHA 等。
在密码学中有一些基础的概念在我们正式开始学习之前我们先从了解一下密码学中的相关概念。
明文指没有经过加密的信息或数据通常可以直接识别出例如个人信息、密码等。由于没有经过加密明文很容易被识别与破解因此在传输明文之前必须进行加密处理。密文将明文通过加密算法按照一定规则进行加密之后明文就会变成密文通常为一堆无序字符密文的形式复杂难以识别及理解。密钥加密算法中使用的加密参数它是在明文转换为密文或将密文转换为明文的算法中输入的参数。密钥分为对称密钥与非对称密钥。加密将明文通过加密算法变成密文的过程。对称加密通信双方同时掌握一个密钥加密解密都是由一个密钥完成的即加密密钥等于解密密钥加解密密钥可以相互推倒出来。双方通信前共同拟定一个密钥不对第三方公开。分组加密分组密码是将明文分成固定长度的组每一组都采用同一密钥和算法进行加密输出也是固定长度的密文。解密将密文通过加密算法解密还原为明文的过程。
加密算法
随着技术的发展也同时为了应对加密算法的安全性我们的加密算法和安全保障手段也是不断变化升级的目前在工作中常用的加密算法主要分为以下几种
消息摘要算法对称加密算法非对称加密算法国密算法
每种算法又包括不同的实现其算法复杂度、安全性以及效率都有区别为了便于大家从整体上对加密算法有个整体认识我绘制了下面这种图需要的建议收藏保存。
消息摘要算法
消息摘要算法也被称为哈希Hash算法或散列算法是一种单向加密算法。在信息安全技术中经常需要验证消息的完整性散列(Hash)函数提供了这一服务它对不同长度的输入消息产生固定长度的输出。这个固定长度的输出称为原输入消息的散列或消息摘要(Message digest)。散列算法从严格意义上来讲并不算是加密算法因为其结果是不可逆的既然是不可逆的那么当然不是用来加密的而是主要用来做数字签名的。
消息摘要算法主要包含以下三种
MD (Message Digest) 消息摘要算法SHA (Secure Hash Algorithm) 安全散列算法HMAC (Keyed-Hashing for Message Authentication) 消息认证码算法
常见的消息摘要算法有MD2、MD4、MD5、SHA-1、SHA-256、SHA-512、HMAC 等。
消息摘要算法具有如下几个特性
运算速度快输出长度固定运算不可逆已知运算结果的情况下无法通过逆运算得到原文。高度离散性输入值的细微变化会导致运算结果差异巨大。弱碰撞性不同输入值的散列值极低概率会出现结果相同。
MD 算法
MD 算法是由著名的非对称算法 RSA 发明人之一的罗纳德·李维斯特设计MD 系列包含 MD2、MD4 以及最典型的 MD5。MD5的全称是Message-Digest Algorithm 5信息-摘要算法第五版是由 MD2 和 MD4 发展而来。
SHA 算法
SHA 算法即安全散列算法Secure Hash Algorithm是一种与MD5同源的数据加密算法该算法经过加密专家多年来的发展和改进已日益完善现在已成为公认的最安全的散列算法之一并被广泛使用。
SHA 实际上是一系列算法的统称分别包括SHA-1、SHA-224、SHA-256、SHA-384 以及 SHA-512。
HMAC 算法
HMAC 是密钥相关的消息认证码HMAC 运算利用哈希算法以一个密钥和一个消息为输入生成一个消息摘要作为输出。
我们在使用 MD 或 SHA 消息摘要算法时可以保证数据的完整性。但是在网络传输场景下消息发送者仅发送原始数据和数据摘要信息是不够的黑客可以通过伪装原始数据和数据摘要信息达到攻击的目的HMAC 算法通过密钥和数据共同生成消息摘要黑客在不知道密钥的情况下伪造数据和消息摘要难度进一步加大。
对称加密算法
对称加密算法是应用较早的加密算法技术比较成熟。在对称加密算法中数据发送方将明文和加密密钥一起经过特定的加密算法处理后使其变成复杂的、无法理解的加密密文后发送给接收方。接收方收到密文报文后若想解读原文则需要使用报文加密时用的同一个密钥及相同算法对密文进行解密才能使其恢复成可读明文。在对称加密算法中双方使用的密钥只有一个双方都需要使用这个密钥对数据进行加密和解密这就要求解密方事先必须获得加密密钥。
常见的对称加密算法有DES、3DESTripleDES和AES。
DES 算法
DES 算法全称为 Data Encryption Standard即数据加密算法它是IBM公司于1975年研究成功并公开发布的。DES 算法的入口参数有三个Key、Data、Mode。其中Key为8个字节共64位是DES算法的工作密钥Data也为8个字节64位是要被加密或被解密的数据Mode为DES的工作方式有两种加密或解密。
3DES 算法
3DES或称为Triple DES是三重数据加密算法TDEATriple Data Encryption Algorithm块密码的通称。它相当于是对每个数据块应用三次DES加密算法。由于计算机运算能力的增强原版DES密码的密钥长度变得容易被暴力破解3DES即是设计用来提供一种相对简单的方法即通过增加DES的密钥长度来避免类似的攻击而不是设计一种全新的块密码算法。
AES 算法
AES(Advanced Encryption Standard)高级加密标准是美国国家标准技术研究所在2001年发布的AES是一个对称分组密码算法旨在取代DES成为广泛使用的标准。
AES 算法是一种最常见的对称加密算法微信小程序加密传输就是用这个加密算法根据使用的密码长度AES 算法最常见的有3种加密方案用以适应不同的场景要求分别是AES-128、AES-192 和 AES-256。
非对称加密算法
非对称加密需要两个密钥公钥 (public key) 和私钥 (private key)。公钥和私钥是一对如果用公钥对数据加密那么只能用对应的私钥解密。如果用私钥对数据加密只能用对应的公钥进行解密。因为加密和解密用的是不同的密钥所以称为非对称加密。
非对称加密算法对于密钥的保密性上要好于对称加密算法它消除了用户需要交换密钥的安全隐患。但是加解密速度要远远慢于对称加密在某些极端情况下甚至能比对称加密慢上1000倍。
常见的非对称加密算法有RSA 、DSA 和ECC 。
RSA 算法
RSA 加密算法是目前最有影响力的公钥加密算法并且被普遍认为是目前最优秀的公钥方案之一。RSA 是第一个能同时用于加密和数字签名的算法它能够抵抗到目前为止已知的所有密码攻击已被 ISO 推荐为公钥数据加密标准。RSA 加密算法基于一个十分简单的数论事实将两个大素数相乘十分容易但那时想要对其乘积进行因式分解却极其困难因此可以将乘积公开作为加密密钥。
DSA 算法
DSA 是基于整数有限域离散对数难题的其安全性与 RSA 相比差不多。DSA 的一个重要特点是两个素数公开这样当使用别人的 p 和 q 时即使不知道私钥你也能确认它们是否是随机产生的还是作了手脚。RSA算法却做不到。DSA 只是一种算法和 RSA 不同之处在于它不能用作加密和解密也不能进行密钥交换只用于签名它比RSA要快很多。
简单的说这是一种更高级的验证方式用作数字签名。不单单只有公钥、私钥还有数字签名。私钥加密生成数字签名公钥验证数据及签名如果数据和签名不匹配则认为验证失败。数字签名的作用就是校验数据在传输过程中不被修改数字签名是单向加密的升级。
ECC 算法
椭圆加密算法ECC是一种公钥加密算法由 Koblitz 和 Miller 两人于 1985 年提出其数学基础是利用椭圆曲线上的有理点构成 Abel 加法群上椭圆离散对数的计算困难性。公钥密码体制根据其所依据的难题一般分为三类大整数分解问题类、离散对数问题类、椭圆曲线类。有时也把椭圆曲线类归为离散对数类。椭圆曲线密码体制是目前已知的公钥体制中对每比特所提供加密强度最高的一种体制。
比特币钱包公钥的生成就使用了椭圆曲线算法通过椭圆曲线乘法可以从私钥计算得到公钥 这是不可逆转的过程。 对称加密算法与非对称加密算法的区别 对称加密算法 加密和解密用到的密钥是相同的这种加密方式加密速度非常快适合经常发送数据的场合。缺点是密钥的传输比较麻烦一旦密钥泄露会有比较严重的安全问题。 非对称加密算法 加密和解密用的密钥是不同的这种加密方式是用数学上的难解问题构造的通常加密解密的速度比较慢适合偶尔发送数据的场合。优点是密钥传输方便。常见的非对称加密算法为RSA、ECC 和 EIGamal。 实际中一般是通过RSA加密AES的密钥传输到接收方接收方解密得到AES密钥然后发送方和接收方用AES密钥来进行加解密。 像https就是用非对称密钥协商出对称密钥再用对称密钥来加密业务数据。 国密算法
国密即国家密码局认定的国产密码算法即商用密码。
国密算法是国家密码局制定标准的一系列算法。其中包括了对称加密算法椭圆曲线非对称加密算法杂凑算法。具体包括SM1、SM2、SM3、SM4等。
SM1 算法
SM1 为对称加密。其加密强度与AES相当。该算法不公开调用该算法时需要通过加密芯片的接口进行调用。
采用该算法已经研制了系列芯片、智能IC卡、智能密码钥匙、加密卡、加密机等安全产品广泛应用于电子政务、电子商务及国民经济的各个应用领域包括国家政务通、警务通等重要领域。
SM2 算法
SM2为非对称加密基于ECC。该算法已公开。由于该算法基于ECC故其签名速度与秘钥生成速度都快于RSA。ECC 256位SM2采用的就是ECC 256位的一种安全强度比RSA 2048位高但运算速度快于RSA。
SM3 算法
SM3 消息摘要可以用MD5作为对比理解。该算法已公开校验结果的摘要长度为256位。
SM4 算法
SM4 无线局域网标准的分组数据算法。对称加密密钥长度和分组长度均为128位。
由于SM1、SM4加解密的分组大小为128bit故对消息进行加解密时若消息长度过长需要进行分组要消息长度不足则要进行填充。
总结
在你看到或看不到的地方安全已经在我们生活中无处不在了安全事情无大小同时安全也是大家最关心的问题通过上面的介绍相信大家也对加密算法有了整体的认识那么接下来就跟我一起对常用的加密算法来进一步学习更深的认识吧。
创作不易如果大家喜欢本文欢迎点赞转发你的关注是我们继续前进的动力 _
欢迎大家关注「我是开发者FTD」公众号微信号ForTheDevelopers
也欢迎大家添加我的个人微信交流微信号ForTheDeveloper
关注开发更关注开发者