文本加密:常见的密码加密解密方法

前言

几年前国内一家大型的开发者论坛数据泄露,其中用户密码居然是以明文方式保存的,很不幸个人经常使用密码在那时候被泄露了。这件事足以证实咱们在保存用户密码的时候是不能用明文保存的。那么问题来了,用什么样的方法加密密码才安全呢?下面介绍一些常见的加密用户密码的算法。算法

散列函数 HASH

你可能不止一次听到过相似“MD5加密密码”或者“SHA1加密密码”等说法。这里面其实有一个误区MD5之类的算法是一种不可逆的算法,也就是说没有办法解密。这种算法有个统一的名字:散列函数。维基百科给出了解释:数据库

散列函数(英语:Hash function)又称散列算法、哈希函数,是一种从任何一种数据中建立小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,从新建立一个叫作散列值(hash values,hash codes,hash sums,或hashes)的指纹。散列值一般用一个短的随机字母和数字组成的字符串来表明。好的散列函数在输入域中不多出现散列冲突。在散列表和数据处理中,不抑制冲突来区别数据,会使得数据库记录更难找到。安全

散列函数有以下特性:不能够从消息摘要中复原信息;两个不一样的消息不会产生一样的消息摘要。函数

MD5 SHA1 SHA256这些都是散列函数。因为现代计算机算力愈来愈强大对MD5进行碰撞试验的成本愈来愈低,目前来讲直接保存密码的MD5值已经再也不安全了,但并非说明MD5自己有问题,若是使用MD5保存用户密码的话能够对密码进行屡次MD5,这样咱们的程序依然是安全的。还有MD5在验证数据完整性的应用上也具备必定的优点。编码

SHA1和SHA256属于一类算法SHA的不一样版本,SHA1是SHA的较旧版本,可生成160位哈希值,而SHA256是SHA2的一种类型,可生成256位哈希值。更推荐使用SHA256,毕竟新版本安全性更高一些。加密

加密解密

DES算法:数据加密标准(英语:Data Encryption Standard,缩写为 DES)是一种对称密钥加密块密码算法,1976年被美国联邦政府的国家标准局肯定为联邦资料处理标准(FIPS),随后在国际上普遍流传开来。它基于使用56位密钥的对称算法。这个算法由于包含一些机密设计元素,相对短的密钥长度以及怀疑内含美国国家安全局(NSA)的后门而在开始时有争议,DES所以受到了强烈的学院派式的审查,并以此推进了现代的块密码及其密码分析的发展。设计

AES算法: 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。通过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。如今,高级加密标准已然成为对称密钥加密中最流行的算法之一。code

RSA算法:RSA加密算法是一种非对称加密算法,在公开密钥加密和电子商业中被普遍使用。RSA是由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)在1977年一块儿提出的。当时他们三人都在麻省理工学院工做。RSA 就是他们三人姓氏开头字母拼在一块儿组成的。开发

这几种算法有个特色就是能够被解密,在实践过程当中使用这种算法对项目的后期维护会增长不少便利。要注意DES算法已经被证实不是一种安全的方法,尽可能不要在新项目中使用。字符串

编码

相似base6四、base62这种算法是对数据进行编码的方式,只是修改了数据表现方式,并无加密功能。通常用来配合其余算法使用。

最后仍是要说安全无小事,咱们在项目开发中仍是要尽可能的注意数据安全的问题,避免形成没必要要的麻烦。

文章出处:文本加密:常见的密码加密解密方法