//采用php自带hash()函数,进行加盐加密操作$pass="abcdefg";$salt=rand();$pass=crypt($pass,$salt);echo$pass.'------salt------'.$salt;
运行结果:
解释:
$pass用来存放自己的密码 $salt是php内置函数自动生成的字符串
p a s s = c r y p t ( pass = crypt( pass=crypt(pass,$salt)是使用php5.5版本更新的加盐加密函数,将字符串加密为未知字符串,这个过程是不可逆的
存放数据库时,应添加 pass 和 salt 字段,将随机生成的salt以及加密后的密文pass保存下来
进行验证操作时,输入的密码为pass,根据用户名从数据库中读取对应的salt以及pass,再次调用crypt()加密函数对输入的内容进行再次加密,与数据库中内容进行比对,进行验证。
安全性比md5,sha-1,sha-256要高
密码学学习笔记
第一章 密码学
1.1密码学的基本概念
密码:微信、QQ、支付宝、银行……等等,用来保护自己的财产,鉴别不同的用户
密码学:网络安全,信息安全,区块链等这些学科的基础
密码学已经存在好几千年的历史
1.2密码学的历史
1.2.1古代密码学
古代就已经开始使用密码,目的就是希望保护信息。
①替换法
使用固定的信息,将原文替换成密文
原文:fly 加密方法: f---->a l------>b y------->c 密文:abc
替换法的加密方式:第一种:单表替换 第二种: 多表替换
单表替换:原文和密文使用的是同一张表
例如:fly--------------abc
多表替换:表示有多张表,原文和密文进行对比
例如:1. abcde----swtrp 2.abcde------chfhk 3.abcde------jftou
原文:abc
密钥:312 (分别代表三张表)
密文:jwf
②移位法
将原文中的字母按照字母表中的位置进行移动
恺撒加密(军事中传递信息): 例如:abcde -------->cdefg (移位2位)
(不安全,易于暴力破解)
只能移动25次
③古典密码学的破解方式
频率分析法:概率论(统计学)
基本概念:将明文字母的出现频率与密文字母的频率相比较的过程。通过分析每个符号出现的频率而轻易地破译代换式密码。在每种语言中,冗长的文章中的字母表现出一种可对之进行分辨的频率。
1.2.2近代密码学
恩尼格玛密码机:二战时期,对文件进行加密和解密
核心:替换法,移位法
机器加密,后被图灵破解(人工智能之父)
1.2.3现代密码学
①散列函数
散列函数,也叫做哈希函数(hash函数)
常见的加密方式:MD5 , SHA-1 , SHA-256(比较流行的加密方式)
MD5可以将任意长度的原文生成一个128位(16字节)的哈希值
SHA-1可以将任意长度的原文生成一个160位(20字节)的哈希值
②对称加密
对称加密,使用的加密方式和解密方式,使用的是同一把密钥
对称密码分为:序列密码(流密码),分组密码(块密码)两种
流密码:对信息流中的每一个元素(一个字母或一个比特)作为基本的处理单元进行加密
块密码:先对信息流进行分块,再对每一块分别加密
例如:
原文:1234567890
流密码:先对1加密,再对2加密,再对3加密.....最后拼接成密文
块密码:将密码分为不同的块,如1234成块,5678成块,90XX成块(XX为补位数字),再分别对每个块进行加密,最后拼接成密文。
前面提到的古典加密方式都属于流密码
③非对称加密
非对称加密:有两把密钥,使用公钥加密,必须使用私钥解密,或者,使用私钥加密,必须使用公钥解密
1.2.4如何设置密码才安全
①密码不要太常见,类似123456作为密码
②各个应用软件的密码不要设置一样,撞库(找小公司的密码进行破解,试你的各种密码)
③在设置密码的时候,可以加一些特殊的标记,,注册京东的账号时,加上jd,zfb,wx,防止撞库
版权归原作者 太吾传人,玛卡巴卡 所有, 如有侵权,请联系我们删除。