可逆加密和不可逆加密
加密算法我们整体可以分为:可逆加密和不可逆加密,可逆加密又可以分为:对称加密和非对称加密。
一、不可逆加密
常见的不可逆加密算法有MD5,HMAC,SHA1、SHA-224、SHA-256、SHA-384,和SHA-512,其中SHA-224、SHA-256、SHA-384,和SHA-512我们可以统称为SHA2加密算法,SHA加密算法的安全性要比MD5更高,而SHA2加密算法比SHA1的要高。其中SHA后面的数字表示的是加密后的字符串长度,SHA1默认会产生一个160位的信息摘要。
不可逆加密算法最大的特点就是密钥,但是HMAC是需要密钥的【手动狗头】。
由于这些加密都是不可逆的,因此比较常用的场景就是用户密码加密,其验证过程就是通过比较两个加密后的字符串是否一样来确认身份的。网上也有很多自称是可以破解MD5密码的网站,其原理也是一样,就是有一个巨大的资源库,存放了许多字符串及对应的MD5加密后的字符串,通过你输入的MD5加密串来进行比较,如果过你的密码复杂度比较低,还是有很大机率验证出来的。
1.1 MD5
MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。
MD5算法有以下特点:
1、压缩性:无论数据长度是多少,计算出来的MD5值长度相同
2、容易计算性:由原数据容易计算出MD5值
3、抗修改性:即便修改一个字节,计算出来的MD5值也会巨大差异
4、抗碰撞性:知道数据和MD5值,很小概率找到相同MD5值相同的原数据。
1.2 SHA系列
安全散列算法(英语:Secure Hash Algorithm,缩写为SHA)是一个密码散列函数家族,是FIPS所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。且若输入的消息不同,它们对应到不同字符串的机率很高。
2005年8月17日的CRYPTO会议尾声中王小云、姚期智、姚储枫再度发表更有效率的SHA-1攻击法,能在2的63次方个计算复杂度内找到碰撞。
也就是说SHA-1加密算法有碰撞的可能性,虽然很小。
1.3 HMAC系列
HMAC是密钥相关的哈希运算消息认证码(Hash-based Message AuthenticaTIon Code)的缩写,由H.Krawezyk,M.Bellare,R.CanetTI于1996年提出的一种基于Hash函数和密钥进行消息认证的方法,并于1997年作为RFC2104被公布,并在IPSec和其他网络协议(如SSL)中得以广泛应用,现在已经成为事实上的Internet安全标准。它可以与任何迭代散列函数捆绑使用。
HMAC算法更像是一种加密算法,它引入了密钥,其安全性已经不完全依赖于所使用的Hash算法
如果要使用不可逆加密,推荐使用SHA256、SHA384、SHA512以及HMAC-SHA256、HMAC-SHA384、HMAC-SHA512这几种算法。
二、对称加密算法
对称加密算法是应用比较早的算法,在数据加密和解密的时用的都是同一个密钥,这就造成了密钥管理困难的问题。常见的对称加密算法有DES、3DES、AES128、AES192、AES256 (默认安装的 JDK 尚不支持 AES256,需要安装对应的 jce 补丁进行升级 jce1.7,jce1.8)。其中AES后面的数字代表的是密钥长度。对称加密算法的安全性相对较低,比较适用的场景就是内网环境中的加解密。
2.1 DES
DES是对称加密算法领域中的典型算法,其密钥默认长度为56位。
2.2 3DES
3DES(即Triple DES)是DES向AES过渡的加密算法,它使用3条56位的密钥对数据进行三次加密。是DES的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加密算法。比起最初的DES,3DES更为安全。密钥长度默认为168位,还可以选择128位。
2.3 AES
AES 高级数据加密标准,能够有效抵御已知的针对DES算法的所有攻击,默认密钥长度为128位,还可以供选择192位,256位。这里顺便提一句这个位指的是bit。
推荐使用对称加密算法有:AES128、AES192、AES256。
三、非对称加密算法
非对称加密算法有两个密钥,这两个密钥完全不同但又完全匹配。只有使用匹配的一对公钥和私钥,才能完成对明文的加密和解密过程。常见的非对称加密有RSA、SM2等。
3.1 RSA
RSA密钥至少为500位长,一般推荐使用1024位。
四、加密盐
加密盐也是比较常听到的一个概念,盐就是一个随机字符串用来和我们的加密串拼接后进行加密。加盐主要是为了提供加密字符串的安全性。假如有一个加盐后的加密串,黑客通过一定手段这个加密串,他拿到的明文,并不是我们加密前的字符串,而是加密前的字符串和盐组合的字符串,这样相对来说又增加了字符串的安全性。
具体算法实现可以到网上自行搜索。
五、总结
比较推荐的几个加密算法有:
不可逆加密:SHA256、SHA384、SHA512以及HMAC-SHA256、HMAC-SHA384、HMAC-SHA512
对称加密算法:AES、3DES
非对称加密算法:RSA
可逆加密和不可逆加密相关推荐
- 不可逆加密:说一下你常用的加密算法
加密算法我们整体可以分为:可逆加密和不可逆加密,可逆加密又可以分为:对称加密和非对称加密. 一.不可逆加密 常见的不可逆加密算法有MD5,HMAC,SHA1.SHA-224.SHA-256.SHA-3 ...
- 对称加密、非对称加密深度解析
密码学的发展 加密的发展史随着人类的进化逐步复杂.严谨也更安全,对于早期的移位和字母对应等加密方式我们不难理解. 移位 : 比如恺撒密码, 简单点说将 26个英文字母的顺序打乱,得到一个新的字母顺序, ...
- JS加密,JS混淆,JS混淆加密,JS不可逆加密,JS加密压缩
分享一个JavaScript加密,JS加密,JS混淆,JS混淆加密,JS不可逆加密,JS加密压缩 ,JS加密. 使用方式 / 注意事项 1.本工具是本站长结合了64个组件(大部分为开源组件),开发出来 ...
- 【PHP】md5加密(不可逆)
MD5加密(不可逆) string md5 ( string $str [, bool $raw_output = false ] ) 参数 * str -- 原始字符串. * raw_output ...
- java使用MD5进行不可逆加密
1.下载需要的jar包:sun.misc.BASE64Decoder.jar,存放在我github的链接地址:https://github.com/zhangliqingyun/jarlist/blo ...
- python可逆加密算法_常见加密方式及Python实现
由于计算机软件的非法复制,通信的泄密.数据安全受到威胁,所以加密在开发过程中是经常使用到的技术,在一些重要场景中都有所应用,如:登录.支付.oauth等,场景不同需要搭配不一样的签名加密算法来达到业务 ...
- 网络协议从入门到底层原理(7)网络安全 - 常见攻击、单向散列函数、对称加密、非对称加密、混合密码系统、数字签名、证书
网络安全 网络层 - ARP欺骗 DoS.DDoS 介绍与防御 传输层 - SYN洪水攻击(SYN flooding attack) 传输层 - LAND攻击 应用层 - DNS劫持.HTTP劫持 H ...
- JackHttp -- 浅谈编码、加密(对称加密,非对称加密,Hash算法)
如果你还不清楚 JackHttp 是什么,请戳这里!!! JackHttp 是一个网络框架系列,为什么还要分享编码和加密呢?主要有如下几个原因: HTTP 在网络传输过程中是明文的. HTTP 在网络 ...
- 【Kotlin学习之旅】使用Kotlin实现常见的对称加密、非对称加密、消息摘要、数字签名的demo
文章目录 Demo 介绍 一.对称加密 二.非对称加密 三.消息摘要 四.数字签名 五.Demo地址 Demo 介绍 使用Kotlin实现常见的对称加密.非对称加密.消息摘要.数字签名的demo 一. ...
最新文章
- 研究生论文盲审、查重再加码!毕业或将变的更加困难...
- 当你学不进去的时候,试试“普瑞马法则
- gitlab新增ssh
- Spring 中基于 AOP 的 XML操作方式
- win8 linux分区工具,Ubuntu下挂载Win8磁盘分区
- 解决ubuntu18.04中python兼容以及pip兼容问题
- HttpResponse对象
- GitHub前50名的Objective-C动画相关库相关推荐,请自行研究
- 5G消息亮相2021国际数字科技展暨天翼智能生态博览会
- linux系统安装pidgin,linux 下安装pidgin-lwqq
- 点赞动画,鼠标点击动画
- 实验3 STP简单配置及介绍
- win7网络发现启用后找不到网络计算机,win7启用网络发现怎么又关闭了怎么解决...
- Vue 使用 yarn 报错
- CTime/COleDateTime::Format方法的使用
- 如何在Windows上下载java
- 浅谈IT行业加班现象
- Syncthing - P2P文件同步工具使用
- 只会收藏松果的“松鼠”
- 海信家电:积极开拓,到处碰壁