架构师训练营第十一周作业
第二题 用户密码验证函数
设计思路:
- 实现语言:Java 
- 将用户ID和用户明文密码拼接为源字符串,通过MessageDigest进行SHA256编码 
- 将编码后的字符串与用户密码密文比较,得出结果 
版权声明: 本文为 InfoQ 作者【文智】的原创文章。
原文链接:【http://xie.infoq.cn/article/4a42ab89966fd2a2a30337029】。未经作者许可,禁止转载。
第二题 用户密码验证函数
设计思路:
实现语言:Java
将用户ID和用户明文密码拼接为源字符串,通过MessageDigest进行SHA256编码
将编码后的字符串与用户密码密文比较,得出结果
/**	 * 将byte数组表示为十六进制格式的字符串	 * @param bytes	 * @return	 */	public String bytes2Hex(byte[] bytes) {		StringBuffer stringBuffer = new StringBuffer();		String hex = null;		for (int i = 0; i < bytes.length; ++i) {			hex = Integer.toHexString(bytes[i] & 0xFF);			stringBuffer.append(hex.length() == 1 ? "0" + hex : hex);		}		return stringBuffer.toString();	}		/**	 * SHA256加密	 * @param 明文字符串	 * @return 加密后的报文	 */	public String getSHA256Str(String str) {		MessageDigest messageDigest;		String encoded = "";		try {			messageDigest = MessageDigest.getInstance("SHA-256");			messageDigest.update(str.getBytes("UTF-8"));			encoded = bytes2Hex(messageDigest.digest());		} catch (NoSuchAlgorithmException e) {			e.printStackTrace();		} catch (UnsupportedEncodingException e) {			e.printStackTrace();		}		return encoded;	}		/**	 * 校验用户密码	 * @param userId 用户ID	 * @param password 明文密码	 * @param savedPassword 数据库保存的密文密码	 * @return	 */	public boolean checkPW(String userId, String password, String savedPassword) {		String encodedPassword = getSHA256Str(userId + "-" + password);		return encodedPassword.equals(savedPassword);	}
版权声明: 本文为 InfoQ 作者【文智】的原创文章。
原文链接:【http://xie.infoq.cn/article/4a42ab89966fd2a2a30337029】。未经作者许可,禁止转载。
还未添加个人签名 2018.11.29 加入
还未添加个人简介

促进软件开发及相关领域知识与创新的传播
 京公网安备 11010502039052号
京公网安备 11010502039052号 
    


评论