【Alpha版本】冲刺阶段——Day2
【Alpha版本】冲刺阶段——Day2
阅读目录
* [今日进展](#1) * [问题困难](#2) * [明日任务](#3) * [今日贡献量](#4) * [站立式会议](#5) * [TODOlist](#6)【今日进展】
密码算法方面:
-
存储密码的步骤
- 使用CSPRNG生成一个长度足够的盐值
- 将盐值混入密码,并使用标准的加密哈希函数进行加密
- 把哈希值和盐值一起存入数据库中对应此用户的那条记录
-
校验密码的步骤
- 从数据库取出用户的密码哈希值和对应盐值
- 将盐值混入用户输入的密码,并且使用同样的哈希函数进行加密
- 比较上一步的结果和数据库储存的哈希值是否相同,如果相同那么密码正确,反之密码错误
-
实现加盐哈希的过程中要避免的错误:
- 错误一:短盐值和盐值重复。用户创建账户或每次修改密码时,都应该重新生成新的盐值进行加密;如果盐值太短,攻击者可以构造一个查询表包含所有可能的盐值,因此要保证盐值占有相对长的位数。
- 错误二:两次哈希和组合哈希函数。
-
参考资料:加盐密码哈希:如何正确使用
连接数据库
-
参考教材P334页代码编写GetDBConnection类,实现与数据库的连接
-
编写程序 CreatTable类,使程序在运行时自动在MySQL数据库中创建表格javablacktea,并且表格中含有用户名、加密后的密码、盐值等项目
public class CreatTable {
static String creatsql = "CREATE TABLE javablacktea("
+ "username varchar(50) not null,"
+ "hash varchar(200) not null,"
+ "salt varchar(50) not null"
+ ")charset=utf8;";
public static void Creat() throws SQLException {
Connection con;
Statement stmt;
con = GetDBConnection.connectDB("mysql","root","");
try {
stmt=con.createStatement();
stmt.executeLargeUpdate(creatsql);
stmt.close();
con.close();
}
catch(Exception e) {}
}
}
【问题困难】
- 原先考虑使用课程中学习过的MD5算法进行加密,但经过一番查询调研后发现,该算法早已过时,网上甚至有专门的网站:http://www1.cmd5.com/ 破解MD5,因此我们需重新选择哈希算法。
【明日任务】
-
韩啸: 辅助组员完成任务,理解已编写出的程序代码,对自己负责部分内容进行学习
-
夏云霄: 辅助组员完成任务,理解已编写出的程序代码,对自己负责部分内容进行学习
-
陈思兵: 辅助组员完成任务,理解已编写出的程序代码,对自己负责部分内容进行学习
-
朱文远:寻找新的加密算法,编写程序加密部分算法
-
张家佳:辅助组员完成任务,理解已编写出的程序代码,收集团队成员进展并且汇总,撰写博客
【今日贡献量】
韩啸 | 夏云霄 | 陈思兵 | 朱文远 | 张家佳 |
---|---|---|---|---|
2 | 3 | 2 | 5.5 | 3.5 |