导致系统不可用原因及密码验证

用户头像
关注
发布于: 2020 年 09 月 13 日
导致系统不可用原因及密码验证

一、请用你熟悉的编程语言写一个用户密码验证函数,Boolean checkPW(String 用户 ID,String 密码明文,String 密码密文)返回密码是否正确 boolean 值,密码加密算法使用你认为合适的加密算法。



package com.crc.mam.admin.controller.system.demo;
import com.crc.mam.util.DigestUtils;
public class PasswordUtils {
public static void main(String[] args) {
String userId = "CYC";
String plainPassWord = "md5password";
String encryptionPassWord = getMD5(userId, plainPassWord);
boolean passwordMatch = checkPW(userId, plainPassWord, encryptionPassWord);
if (passwordMatch) {
System.out.println("Provided user password " + plainPassWord + " is correct.");
} else {
System.out.println("Provided user password is incorrect!");
}
}
private static boolean checkPW(String userId, String plainPassWord, String encryptionPassWord) {
String generatePassWord = getMD5(userId, plainPassWord);
return encryptionPassWord.equalsIgnoreCase(generatePassWord);
}
/**
* 生成md5
*
* @param userId
* @return
*/
public static String getMD5(String userId, String password) {
String str = userId + password;
String md5 = DigestUtils.md5DigestAsHex(str.getBytes()).toUpperCase();
return md5;
}
}



二、

导致系统不可用的原因

  1. 硬件故障

  2. 软件程序Bug

  3. 系统发布

  4. 并发压力

  5. 网络攻击

  6. 外部不可抗因素(如:自然灾害、电缆被挖断)



高可用系统架构

1. 系统或组件解耦

2. 业务隔离

3. 异步架构

4. 备份(集群、多节点)

5. 重试、失效转移

6. 熔断、限流

7. 服务无状态

8. 幂等设计、事务补偿

9. 异地多活

高可用系统运维

1. 规范化发布流程

2. 自动化发布/灰度发布

3. 自动化运维监控、报警

安全架构

1. 开发安全防范(如:安全加密,HTTPS)

2. 网络安全配置

3. 防火墙

4. 黑/白名单

5. 安全扫描及监控



用户头像

关注

everything will be alright 2020.04.06 加入

还未添加个人简介

评论

发布
暂无评论
导致系统不可用原因及密码验证