基于工作过程的商务网站建设:网页制作,福州高端品牌网站建设,客户网站建设,怎样做公众号微信平台目录 1. 加密的引出2. MD5介绍3. 解决MD5不可解密方法4. 实现加密解密4.1 加密4.2 验证密码 1. 加密的引出
在MySQL数据库中#xff0c;一般都需要把密码、身份证、电话号码等信息进行加密#xff0c;以确保数据的安全性。如果使用明文来存储#xff0c;当数据库被入侵的时… 目录 1. 加密的引出2. MD5介绍3. 解决MD5不可解密方法4. 实现加密解密4.1 加密4.2 验证密码 1. 加密的引出
在MySQL数据库中一般都需要把密码、身份证、电话号码等信息进行加密以确保数据的安全性。如果使用明文来存储当数据库被入侵的时候那么用户的这些重要信息就会泄露从而造成很大的损失。
2. MD5介绍
密码算法主要分为三类对称密码、非对称密码和摘要算法。而MD5是常见的摘要算法之一。摘要算法是把任意长度的输入信息数据转化为固定长度的输出数据的一种密码算法是不可逆的即不可解密的。
3. 解决MD5不可解密方法 采用一个密码拼接一个随机字符来进行加密这个随机字符就称之为 盐。 而盐值通过UUID.randomUUID()方法来生成。 加密算法 数据库中存储的信息是盐值密文即盐值md5明文盐值。 md5明文盐值加密 解密流程由于MD5不可逆所以通常采用判断哈希值是否一致来判断密码是否相等。如果用户输入的的密码 加盐之后进行md5加密即md5用户输入的密码盐值 盐值 和 存储在数据库的密文是否相等。 4. 实现加密解密
4.1 加密
/*** 加密* password : 用户注册时输入的密码* return 数据库存储的信息 盐值 md5(明文盐值)*/public static String encrypt(String password) {// 生成盐值String salt UUID.randomUUID().toString().replace(-, );// 对明文盐值 进行MD5加密String finalPassword DigestUtils.md5DigestAsHex((password salt).getBytes());// 存储在数据库的信息return saltfinalPassword;}4.2 验证密码
/*** 验证密码是否正确* param inputPassword 用户登录输入的密码* param sqlPassword 数据库中password字段存储的信息 盐值 md5明文盐值* return*/public static boolean varify(String inputPassword,String sqlPassword) {if (!StringUtils.hasLength(inputPassword)) {return false;}if (sqlPassword null || sqlPassword.length()!64) {return false;}// 获取盐值String salt sqlPassword.substring(0,32);// 根据用户输入的密码和盐值进行加密 md5明文盐值String finalPassword DigestUtils.md5DigestAsHex((inputPassword salt).getBytes());return (saltfinalPassword).equals(sqlPassword);}