⽂本加密:常见的密码加密解密⽅法
前⾔
⼏年前国内⼀家⼤型的开发者论坛数据泄露,其中⽤户密码竟然是以明⽂⽅式保存的,很不幸我的常⽤密码在那时候被泄露了。这件事⾜以证明我们在保存⽤户密码的时候是不能⽤明⽂保存的。那么问题来了,⽤什么样的⽅法加密密码才安全呢?下⾯介绍⼀些常见的加密⽤户密码的算法。
散列函数 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⽇成为有效的标准。现在,⾼级加密标准已然成为对称密钥加密中最流⾏的算法之⼀。
RSA算法:RSA加密算法是⼀种⾮对称加密算法,在公开密钥加密和电⼦商业中被⼴泛使⽤。RSA是由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)在1977年⼀起提出的。当时他们三⼈都在⿇省理⼯学院⼯作。RSA 就是他们三⼈姓⽒开头字母拼在⼀起组成的。
这⼏种算法有个特点就是可以被解密,在实践过程中使⽤这种算法对项⽬的后期维护会增加很多便利。要注意DES算法已经被证明不是⼀种安全的⽅法,尽量不要在新项⽬中使⽤。
编码
类似base64、base62这种算法是对数据进⾏编码的⽅式,只是修改了数据表现⽅式,并没有加密功能。⼀般⽤来配合其他算法使⽤。
最后还是要说安全⽆⼩事,我们在项⽬开发中还是要尽量的注意数据安全的问题,避免造成不必要的⿇烦。
⽂章出处:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论