摘要:在开发过程中,常常用到各种加密方法和算法,本文总结了几种常用加密方法的原理。非对称加密原理非对称加密算法需要两个密钥公开密钥和私有密钥。
在开发过程中,常常用到各种加密方法和算法,本文总结了几种常用加密方法的原理。
加密和解密数据使用同一个密钥,适合对大量数据进行加解密
安全性:关键是密钥的保存方式,加密或是解密的任何一方泄漏密钥,都会导致信息泄漏
代表算法:DES、3DES、Blowfish、IDEA、RC4、RC5、RC6、AES等
对称密码常用的数学运算:移位和循环移位
移位就是将一段数码按照规定的位数整体性地左移或右移。循环右移就是当右移时,把数码的最后的位移到数码的最前头,循环左移正相反。例如,对十进制数码12345678循环右移1位(十进制位)的结果为81234567,而循环左移1位的结果则为23456781。
置换
就是将数码中的某一位的值根据置换表的规定,用另一位代替。它不像移位操作那样整齐有序,看上去杂乱无章。这正是加密所需,被经常应用。
扩展
就是将一段数码扩展成比原来位数更长的数码。扩展方法有多种,例如,可以用置换的方法,以扩展置换表来规定扩展后的数码每一位的替代值。
压缩
就是将一段数码压缩成比原来位数更短的数码。压缩方法有多种,例如,也可以用置换的方法,以表来规定压缩后的数码每一位的替代值。
异或
这是一种二进制布尔代数运算。异或的数学符号为⊕ ,它的运算法则如下:
1⊕1 = 0
0⊕0 = 0
1⊕0 = 1
0⊕1 = 1
也可以简单地理解为,参与异或运算的两数位如相等,则结果为0,不等则为1。迭代
迭代就是多次重复相同的运算,这在密码算法中经常使用,以使得形成的密文更加难以破解。
非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密
安全性:公钥可以被任何人知道,但是私钥被泄漏就会导致信息泄漏
应用场景:数字签名,私钥拥有者对信息进行加密,接受者使用公钥解密成功,就可以确定发送者的身份
密钥长度:通常是1024,2048等。密钥长度增长一倍,公钥操作所需时间增加约4倍,私钥操作所需时间增加约8倍,公私钥生成时间约增长16倍
加密的明文长度:加密的明文长度不能超过RSA密钥的长度减去11byte,比如密钥长度是1024位的,1024位=1024bit=128byte,128-11=117byte,所以明文长度不能超过117byte,如果长度超过该值将会抛出异常。加密后密文的长度为密钥的长度,如密钥长度为1024bit(128Byte),最后生成的密文固定为 1024bit(128Byte)
代表算法:DES、3DES、Blowfish、IDEA、RC4、RC5、RC6、AES等
采用某种散列函数,输入不同长度的明文,得到相同的长度的密文,明文的微小变化都能引起密文的巨大变化。其实哈希散列算法不算是真正的加密,而是生成对应明文的指纹信息,用来校验数据的完整性。
安全性:不能通过密文反推明文,通常作为数据的完整性校验
应用场景1:生成信息摘要,验证信息的完整性
应用场景2:不用明文存储用户密码,比如使用md5(md5(用户密码)+salt)来存储密码和验证密码,防止攻击者用彩虹表攻击
代表算法:MD2、MD4、MD5、PANAMA、SHA-0、SHA-1、SHA-256、SHA-512等
常用算法对比名称 | 密钥长度 | 运算速度 | 安全性 | 资源消耗 | 加密类型 |
---|---|---|---|---|---|
DES | 56位 | 较快 | 低 | 中 | 对称 |
3DES | 168位 | 慢 | 中 | 高 | 对称 |
IDEA | 128位 | 较慢 | 中 | 高 | 对称 |
AES | 128、192、256位 | 快 | 高 | 低 | 对称 |
RSA | 1024、2048、3072、4096 | 慢 | 高 | 高 | 非对称 |
DSA | 1024、2048、3072、4096 | 慢 | 高 | 低 | 非对称 |
ECC | 256 | 快 | 高 | 低 | 非对称 |
SHA-1 | 慢 | 高 | 低 | 散列 | |
MD5 | 快 | 中 | 低 | 散列 |
DES加密算法原理
DES算法实例详解
AES对称加密算法扫盲
DES,3DES,AES这三种对称密钥的区别与联系
数字签名算法介绍和区别
HOTP和TOTP算法图解
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/11379.html
摘要:当年玩耍前言是开发中最常用的工具之一,通常大家会使用去调用远程,使用其中比较基础的,长期开发爬虫,会接触不常用的,同时会遇到各式各样的坑,下面会总结这些年遇到的坑坑坑坑一解决过程开发某省份移动爬虫时,加载首页会报标题错误,尝试各种办法都不好 当年玩耍httpclient 前言 httpclient是java开发中最常用的工具之一,通常大家会使用httpcilent去调用远程,使用其中比...
摘要:时间年月日星期一说明本文部分内容均来自慕课网。多用于网络加密。散列函数函数或消息摘要函数主要作用散列函数用来验证数据的完整性。 时间:2017年4月10日星期一说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学示例源码:https://github.com/zccodere/s...个人学习源码:https://github.com/zccodere...
摘要:系列密码学二传送门密码学一基础密码学算法分类消息编码消息摘要类,类,对称密码非对称密码数字签名五元组明文原始信息。非对称密码包提供给,,等非对称加密算法。对称加密算法在分布式网络系统上使用较为困难,主要是因为密钥管理困难,使用成本较高。 前言 最近一场面试,面试官问了我 对称加密与非对称加密的问题,虽然曾经看过一些内容,但是没有系统的整理,所以当被问的时候,脑子里一片空白,没有回答上...
阅读 1705·2023-04-26 02:30
阅读 1032·2021-11-10 11:36
阅读 1379·2021-10-08 10:14
阅读 3494·2021-09-28 09:35
阅读 1551·2021-08-23 09:47
阅读 2542·2019-08-30 15:56
阅读 1468·2019-08-30 15:44
阅读 1749·2019-08-30 13:59