一、java异常的处理
1、异常处理流程
2、如果程序出现异常之后程序依然可以正常的完成的话,那么就可以使用如下异常处理程序。
try{
可能出现异常的语句;
}[catch (异常类型 异常对象){
处理异常;
}catch (异常类型 异常对象){
处理异常;
}...][finally {
不管是否出现异常,都执行此代码;
}]
3、示例:
二、StreamTest2.java源码分析(使用Stream生成指定范围的随机数)
step1:Add each number in the range sequentially in a list structure.
step3:Take the first 'n'.
三、MD5加密加盐与SHA
1、为什么要在密码里加点“盐”?
盐(Salt)
在密码学中,是通过在密码任意固定位置插入特定的字符串,让散列后的结果和使用原始密码的散列结果不相符,这种过程称之为“加盐”。
Salt 可以是任意字母、数字、或是字母或数字的组合,但必须是随机产生的,每个用户的 Salt 都不一样。
实际项目中,Salt 不一定要加在最前面或最后面,也可以插在中间嘛,也可以分开插入,也可以倒序,程序设计时可以灵活调整,都可以使破解的难度指数级增长。
Salt 虽然大大提高了安全系数,但也并非绝对安全。
参考链接:https://libuchao.com/2013/07/05/password-salt
2、密码加密方式
第一代密码:
采用明文存储密码的。优缺点:设计思路简单,但数据库一旦泄露,后非常严重。
第二代密码:
存储加密后的密码,典型的加密算法是MD5和SHA1。当用户登录时,会把用户输入的密码执行MD5(或SHA1)。
第三代密码:
用户注册的时候,数据库中存入的不是明文密码,也不是简单的对明文密码进行散列,而是 MD5( 明文密码 + Salt)。
3、MD5(Message-Digest Algorithm5)与SHA(Secure Hash Algorithm)
(1)MD5与SHA的应用领域。
MD5和SHA-1是当前应用最为广泛的两种单向散列算法,如信息安全和数字签名等各个领域。当前几乎所有主要的信息安全协议中都使用了SHA-1或MD5,包括SSL(HTTPS就是SSL的一种应用)、TLS、PGP、SSH、S/MIME和IPSec。
SHA-1基于MD5,MD5又基于MD4。
哈希(Hash):Hash主要用于信息安全领域中的加密算法,它把一些不同长度的信息转换成杂乱的128位的编码,叫做Hash值,又称‘散列值’。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
(2)MD5的特点:MD5是一种不可逆的加密算法,具有高度的离散性(也就是说,原信息的一点点变化就会导致MD5的巨大变化),这个码有128位那么长,所以任意信息之间具有相同MD5码的可能性非常之低,通常被认为是不可能的。
(3)安全协议SSH公钥登录
公钥登录是为了解决每次登录服务器都要输入密码的问题,流行使用RSA加密方案,主要流程包含:
1、客户端生成RSA公钥和私钥
2、客户端将自己的公钥存放到服务器
3、客户端请求连接服务器,服务器将一个随机字符串发送给客户端
4、客户端根据自己的私钥加密这个随机字符串之后再发送给服务器
5、服务器接受到加密后的字符串之后用公钥解密,如果正确就让客户端登录,否则拒绝。这样就不用使用密码了。