当前位置 : 主页 > 编程语言 > c++ >

密码+盐 md5加密

来源:互联网 收集:自由互联 发布时间:2021-07-03
gistfile1.txt //向数据库存入密文和盐值public static String[] parsePassToMd5(String password) { //定义两个存字符串的数组String[] result = new String[2]; //获取一个长度为的随机字符串String salt = getRandomSt
gistfile1.txt
//向数据库存入密文和盐值
public static String[] parsePassToMd5(String password) {
     //定义两个存字符串的数组
		String[] result = new String[2];
    //获取一个长度为的随机字符串
		String salt = getRandomString(8);
        // password和salt弄到一起
		String lainText = password + salt;
        //对这个字符串进行md5加密
		result[0] = parseStrToMd5L32(lainText);
        //把盐值存入数组中
		result[1] = salt;
		return result;
}
//返回加密后的密文
public static String parseStrToMd5L32(String lainText) {
		System.out.println(lainText);
		String resultStr = null;
		try {
            //jdk内部提供的一个加密类,选择进行加密的算法
			MessageDigest md5 = MessageDigest.getInstance("MD5");
            //加密的方法
			byte[] bytes = md5.digest(lainText.getBytes());
            //把密文转成字符串
			StringBuffer stringBuffer = new StringBuffer();
			for (int i = 0; i < bytes.length; i++) {
				int bt = bytes[i] & 0xff;
				if (bt < 16) {
					stringBuffer.append(0);
				}
				stringBuffer.append(Integer.toHexString(bt));
			}
			resultStr = stringBuffer.toString();
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
		return resultStr;
	}

	//进行密码比较,因为存入数据库中的password字段的值,你无法重新解析成功为密码
	//输入的密码,和从数据库中的salt取出来,进行加密后,再比较
	public static boolean comparePass(String pass,String salt,String md5Pass) {
		boolean bool = false;
		String lainText = pass+salt;
		if(parseStrToMd5L32(lainText).equals(md5Pass)){
			bool = true;
		}
		return bool;
	}
网友评论