浅谈加密算法

前言

数字签名、信息加密 是前后端开发都经常需要使用到的技术,应用场景包括了用户登入、交易、信息通讯、oauth 等等,不同的应用场景也会需要使用到不同的签名加密算法,或者需要搭配不一样的 签名加密算法 来达到业务目标。这里简单的给大家介绍几种常见的签名加密算法和一些典型场景下的应用。
正文
1. 数字签名

数字签名,简单来说就是通过提供 可鉴别 的 数字信息 验证 自身身份 的一种方式。一套 数字签名 通常定义两种 互补 的运算,一个用于 签名,另一个用于 验证。分别由 发送者 持有能够 代表自己身份 的 私钥 (私钥不可泄露),由 接受者 持有与私钥对应的 公钥 ,能够在 接受 到来自发送者信息时用于 验证 其身份。

注意:图中 加密过程 有别于 公钥加密,更多 介绍戳这里签名 最根本的用途是要能够唯一 证明发送方的身份,防止 中间人攻击CSRF 跨域身份伪造。基于这一点在诸如 设备认证用户认证第三方认证 等认证体系中都会使用到 签名算法 (彼此的实现方式可能会有差异)。

2. 加密和解密
2.1. 加密

数据加密 的基本过程,就是对原来为 明文 的文件或数据按 某种算法 进行处理,使其成为 不可读 的一段代码,通常称为 “密文”。通过这样的途径,来达到 保护数据 不被 非法人窃取、阅读的目的。
2.2. 解密

加密 的 逆过程 为 解密,即将该 编码信息 转化为其 原来数据 的过程。
3. 对称加密和非对称加密

加密算法分 对称加密 和 非对称加密,其中对称加密算法的加密与解密 密钥相同,非对称加密算法的加密密钥与解密 密钥不同,此外,还有一类 不需要密钥 的 散列算法。

常见的 对称加密 算法主要有 DES、3DES、AES 等,常见的 非对称算法 主要有 RSA、DSA 等,散列算法 主要有 SHA-1、MD5 等。

3.1. 对称加密

对称加密算法 是应用较早的加密算法,又称为 共享密钥加密算法。在 对称加密算法 中,使用的密钥只有一个,发送 和 接收 双方都使用这个密钥对数据进行 加密 和 解密。这就要求加密和解密方事先都必须知道加密的密钥。

数据加密过程:在对称加密算法中,数据发送方 将 明文 (原始数据) 和 加密密钥 一起经过特殊 加密处理,生成复杂的 加密密文 进行发送。

数据解密过程:数据接收方 收到密文后,若想读取原数据,则需要使用 加密使用的密钥 及相同算法的 逆算法 对加密的密文进行解密,才能使其恢复成 可读明文。

3.2. 非对称加密

非对称加密算法,又称为 公开密钥加密算法。它需要两个密钥,一个称为 公开密钥 (public key),即 公钥,另一个称为 私有密钥 (private key),即 私钥。

因为 加密 和 解密 使用的是两个不同的密钥,所以这种算法称为 非对称加密算法。

如果使用 公钥 对数据 进行加密,只有用对应的 私钥 才能 进行解密。

如果使用 私钥 对数据 进行加密,只有用对应的 公钥 才能 进行解密。

例子:甲方生成 一对密钥 并将其中的一把作为 公钥 向其它人公开,得到该公钥的 乙方 使用该密钥对机密信息 进行加密 后再发送给甲方,甲方再使用自己保存的另一把 专用密钥 (私钥),对 加密 后的信息 进行解密。

4. 常见的签名加密算法
4.1. MD5算法

MD5 用的是 哈希函数,它的典型应用是对一段信息产生 信息摘要,以 防止被篡改。严格来说,MD5 不是一种 加密算法 而是 摘要算法。无论是多长的输入,MD5 都会输出长度为 128bits 的一个串 (通常用 16 进制 表示为 32 个字符)。

4.2. SHA1算法

SHA1 是和 MD5 一样流行的 消息摘要算法,然而 SHA1 比 MD5 的 安全性更强。对于长度小于 2 ^ 64 位的消息,SHA1 会产生一个 160 位的 消息摘要。基于 MD5、SHA1 的信息摘要特性以及 不可逆 (一般而言),可以被应用在检查 文件完整性 以及 数字签名 等场景。

4.3. HMAC算法

HMAC 是密钥相关的 哈希运算消息认证码(Hash-based Message Authentication Code),HMAC 运算利用 哈希算法 (MD5、SHA1 等),以 一个密钥 和 一个消息 为输入,生成一个 消息摘要 作为 输出。

HMAC 发送方 和 接收方 都有的 key 进行计算,而没有这把 key 的第三方,则是 无法计算 出正确的 散列值的,这样就可以 防止数据被篡改。

4.4. AES/DES/3DES算法

AES、DES、3DES 都是 对称 的 块加密算法,加解密 的过程是 可逆的。常用的有 AES128、AES192、AES256 (默认安装的 JDK 尚不支持 AES256,需要安装对应的 jce 补丁进行升级 jce1.7,jce1.8)。
4.4.1. DES算法

DES 加密算法是一种 分组密码,以 64 位为 分组对数据 加密,它的 密钥长度 是 56 位,加密解密 用 同一算法。

DES 加密算法是对 密钥 进行保密,而 公开算法,包括加密和解密算法。这样,只有掌握了和发送方 相同密钥 的人才能解读由 DES加密算法加密的密文数据。因此,破译 DES 加密算法实际上就是 搜索密钥的编码。对于 56 位长度的 密钥 来说,如果用 穷举法 来进行搜索的话,其运算次数为 2 ^ 56 次。
4.4.2. 3DES算法

是基于 DES 的 对称算法,对 一块数据 用 三个不同的密钥 进行 三次加密,强度更高。
4.4.3. AES算法

AES 加密算法是密码学中的 高级加密标准,该加密算法采用 对称分组密码体制,密钥长度的最少支持为 128 位、 192 位、256 位,分组长度 128 位,算法应易于各种硬件和软件实现。这种加密算法是美国联邦政府采用的 区块加密标准。

AES 本身就是为了取代 DES 的,AES 具有更好的 安全性、效率 和 灵活性。

4.5. RSA算法

RSA 加密算法是目前最有影响力的 公钥加密算法,并且被普遍认为是目前 最优秀的公钥方案 之一。RSA 是第一个能同时用于 加密 和 数字签名 的算法,它能够 抵抗 到目前为止已知的 所有密码攻击,已被 ISO 推荐为公钥数据加密标准。

RSA 加密算法 基于一个十分简单的数论事实:将两个大 素数 相乘十分容易,但想要对其乘积进行 因式分解 却极其困难,因此可以将 乘积 公开作为 加密密钥。

4.6. ECC算法

ECC 也是一种 非对称加密算法,主要优势是在某些情况下,它比其他的方法使用 更小的密钥,比如 RSA 加密算法,提供 相当的或更高等级 的安全级别。不过一个缺点是 加密和解密操作 的实现比其他机制 时间长 (相比 RSA 算法,该算法对 CPU 消耗严重)。

5. 各种加密算法对比

5.1. 散列算法比较

5.4. 对称算法与非对称加密算法
5.4.1. 对称算法

密钥管理:比较难,不适合互联网,一般用于内部系统

安全性:中

加密速度:快好 几个数量级 (软件加解密速度至少快 100 倍,每秒可以加解密数 M 比特 数据),适合大数据量的加解密处理

5.4.2. 非对称算法

密钥管理:密钥容易管理

安全性:高

加密速度:比较慢,适合 小数据量 加解密或数据签名

本文介绍了 数字签名加密和解密对称加密和非对称加密,具体详细的使用和代码实例自行去网上查找,结合工作中实际需求更好哦!

原文地址:https://www.cnblogs.com/little-fly/p/10247257.html

时间: 2024-10-17 21:41:48

浅谈加密算法的相关文章

Android安全开发之启动私有组件漏洞浅谈

0x00 私有组件浅谈 android应用中,如果某个组件对外导出,那么这个组件就是一个攻击面.很有可能就存在很多问题,因为攻击者可以以各种方式对该组件进行测试攻击.但是开发者不一定所有的安全问题都能考虑全面. ? 对于这样的问题,最方便的修复方式就是在确定不影响业务的情况下,将这个存在问题的组件不对外导出变成私有组件.这样做的确很有效,私有组件也很安全.但是,如果存在某个私有组件能被导出组件启动的话,那么这个私有组件其实就不再是私有了.如果攻击者可以通过控制导出的组件对私有组件进行控制,那么攻

浅谈DES加密算法

一.DES加密算法介绍 1.要求密钥必须是8个字节,即64bit长度 2.因为密钥是byte[8] , 代表字符串也可以是非可见的字节,可以与Base64编码算法一起使用 3.加密.解密都需要通过字节数组作为数据和密钥进行处理 二.对称加密 DES加密算法属于对称加密. 即利用指定的密钥,按照密码的长度截取数据,分成数据块,和密钥进行复杂的移位.算数运算或者数据处理等操作,形成只有特定的密码才能够解开的数据. 加密与解密用的是同一个密钥 三.相关类 1.Cipher: Java/Android要

浅谈RSA加密算法

一.什么是非对称加密 1.加密的密钥与加密的密钥不相同,这样的加密算法称之为非对称加密 2.密钥分为:公钥,私钥  公钥:可以对外给任何人的加密和解密的密码,是公开的 私钥:通过私钥可以生成公钥,但从公钥被认为无法生成公钥(被推导出的概率小到不考虑) 3.当将要加密的内容用公钥加密的时候,只能用私钥来解密 当将要加密的内容用私钥加密的时候,只能用公钥来解密 4.公钥与私钥的关系,利用一个简单的公式来生成公钥和私钥,即非对称加密的公钥和私钥之间存在某一个公式关系 5.常见的非对称加密算法 RSA,

浅谈IM软件业务知识——非对称加密,银行U盾的原理

概述 首先了解一下相关概念:RSA算法:1977年由Ron Rivest.Adi Shamirh和LenAdleman发明的,RSA就是取自他们三个人的名字.算法基于一个数论:将两个大素数相乘非常容易,但要对这个乘积的结果进行 因式分解却非常困难,因此可以把乘积公开作为公钥,该算法能够抵抗目前已知的所有密码攻击.RSA算法是一种非对称算法,算法需要一对密钥,使用其中一个 加密,需要使用另外一个才能解密.我们在进行RSA加密通讯时,就把公钥放在客户端,私钥留在服务器. RSA非对称加密算法,可以验

浅谈协议安全

写下最近在研究的macsec方面的东西.思路不是很清晰现在,我就从wep开始谈吧.我将从几个方面来谈这些事,比如密码算法,认证过程等.各位看官且看. Wep设计的思想是通过使用RC4流密码算法加密来保护数据的机密性,通过问答机制实现对用户身份认证和接入控制(其实就是两元对等的模型.)然后过过CRC32循环冗余校验码来保护数据完整性.其实这里就是一个封包格式的填充 为了让验证段处理固定的报文格式. WEP帧的封装过程 我上个图: 看上图.我解释一下.Wep在传输过程中协议保护了完整性.防止数据被篡

浅谈密码存储安全

前言 用户信息泄露事件层出不穷,百度或谷歌输入"密码泄露",搜出来的泄密门更是让人目瞪口呆:从小公司到大公司,从明文存储到普通的哈希加密.作为一个IT从业者,我深刻感受到"得用户者得天下",尤其在互联网+盛行的趋势下.密码存储作为软件服务系统基础架构中不可缺少的一部分,越来越多的受到开发者的重视.对于一个服务,如果信息安全部分出问题,我想没有必要进一步去做用户体验的提升,性能的优化.进而也不可能获取大用户的青睐.还是那句话:出来混,迟早要还的. 本人并非密码学出生,

【转】 浅谈Radius协议

浅谈Radius协议 2013-12-03 16:06 5791人阅读 评论(0) 收藏 举报  分类: Radius协议分析(6)  从事Radius协议开发有段时间了,小弟不怕才疏学浅,卖弄一下,从RADIUS协议谈谈对身份认证的认识,也总结一下自己. 一.RADIUS协议原理 RADIUS(Remote Authentication Dial In User Service) 用户远程拨入认证服务,它主要针对的远程登录类型有:SLIP.PPP.telnet和rlogin等.RADIUS协议

[转]浅谈https\ssl\数字证书

浅谈https\ssl\数字证书 http://www.cnblogs.com/P_Chou/archive/2010/12/27/https-ssl-certification.html 全球可信的SSL数字证书申请:http://www.shuzizhengshu.com 在互联网安全通信方式上,目前用的最多的就是https配合ssl和数字证书来保证传输和认证安全了.本文追本溯源围绕这个模式谈一谈. 名词解释 首先解释一下上面的几个名词: https:在http(超文本传输协议)基础上提出的

浅谈信息加密技术和算法

1单向散列加密 单向散列加密是指通过对不同输入长度的信息进行散列计算,得到固定长度的输出,这个散列计算过程是单向的,不可逆的.常用的单向散列算法有MD5,SHA等. 比如网站中,用户密码,一般可以进行MD5加密后保存,用户登录时,对用户输出的密码进行加密后和数据库密文进行比较,如果一致,则验证成功. 为了加强计算的安全性,可以对数据加上密钥,增加破解的难度. 推荐使用 apache common的 commons-codec的 jar包 比如(commons-codec-1.8.jar)