首页 > 其他分享 >md5加盐加密

md5加盐加密

时间:2024-10-24 13:43:41浏览次数:1  
标签:加密 String System 密码 加盐 finalPassword password out md5

package org.security;

import org.apache.commons.codec.digest.DigestUtils;

import java.util.UUID;

/**
 * @author 50649
 */
public class SecurityUtil {
    /**
     * 加盐加密
     *
     * @param password
     * @return
     */
    public static String encrypt(String password) {
        // 每次生成内容不同的,但长度固定 32 位的盐值
        String salt = UUID.randomUUID().toString().replace("-", "");
        // 最终密码=md5(盐值+原始密码)
        String finalPassword = DigestUtils.md5Hex((salt + password).getBytes());
        return salt + finalPassword;
    }

    /**
     * 密码验证
     *
     * @param password      待验证密码
     * @param finalPassword 最终正确的密码(数据库中加盐的密码)
     * @return
     */
    public static boolean decrypt(String password, String finalPassword) {
        // 非空效验
        if (null == password || null == finalPassword) {
            return false;
        }
        if (finalPassword.length() != 64) {
            // 最终密码不正确
            return false;
        }
        // 盐值
        String salt = finalPassword.substring(0, 32);
        // 使用盐值+待确认的密码生成一个最终密码
        String securityPassword = DigestUtils.md5Hex((salt + password).getBytes());
        System.out.println("securityPassword=="+securityPassword);
        // 使用盐值+最终的密码和数据库的真实密码进行对比
        return (salt + securityPassword).equals(finalPassword);
    }

    public static void main(String[] args) {
        String password = "123";

//        System.out.println(SecurityUtil.encrypt(password)); // 4d94e438ab74495a8bb2fea0bf96887d9222409880242be59dbda7265d64418b
//        System.out.println(SecurityUtil.encrypt(password)); // 942890192ad04369a1667b2b0308a2640d052e9b17d422ec8e7925e81af95470
//        System.out.println(SecurityUtil.encrypt(password)); // b8fdcdbc855a41afa7d0135304bd826e025f7d140c66342f69833578d2d64776

        System.out.println(SecurityUtil.decrypt(password, "4d94e438ab74495a8bb2fea0bf96887d9222409880242be59dbda7265d64418b"));
        System.out.println(SecurityUtil.decrypt(password, "942890192ad04369a1667b2b0308a2640d052e9b17d422ec8e7925e81af95470"));
        System.out.println(SecurityUtil.decrypt(password, "b8fdcdbc855a41afa7d0135304bd826e025f7d140c66342f69833578d2d64776"));

    }

}

  

标签:加密,String,System,密码,加盐,finalPassword,password,out,md5
From: https://www.cnblogs.com/xianz666/p/18499434

相关文章

  • 如何给pdf文档加密码保护?(2024全新)6个靠谱pdf加密方法分享
    如何给pdf文档加密码保护?日常办公生活中,我们经常需要使用到pdf文件。作为一个打工人,我们经常需要进行文件传输交流,当你将PDF文件分享到一个群或者人数较多的平台时,为了不让其他人随意查看文件,和保护文件隐私信息不被泄露,我们会选择给文件进行加密保护。那么要如何给PDF文件进行......
  • 【文件加密系统】华企盾DSC服务程序启动失败解决办法
    问题原因:1.sa账户密码错误导致连接数据数据库失败无法启动DSC服务解决方法:用windows身份验证进入数据库更改sa用户密码:安全性>登录名>sa>右键属性>更改密码※如果显示请输入秘钥更改,使用更改完密码的sa账户登录数据库,在数据库>DSEDB>表>dbo.FileEncryptKey_TABLE_>右键编......
  • 【CryptoJS】解密/加密
    解密/加密方法:Decrypt,EncryptimportCryptoJSfrom'crypto-js';//引用AES源码jsimportmomentfrom'moment';//constCryptoJS=require('crypto-js')constkey=CryptoJS.enc.Utf8.parse('dPCtSgMDTKAgWjY1');//十六位十六进制数作为密钥......
  • SM2 - 公钥加密算法
    符号A,B:使用公钥密码系统的两个用户。\(a,b\):\(F_q\)中的元素,他们定义\(F_q\)上的一条椭圆曲线\(E\)。\(d_B\):用户B的私钥。\(E⁡(F_q)\):\(F_q\)上椭圆曲线\(E\)的所有有理点(包括无穷远点\(O\))组成的集合。\(F_q\):包含\(q\)个元素的有限域。\(G\):椭圆曲线的一个基点,其阶为......
  • 2024版最新148款CTF工具整理大全(附下载安装包)含基础环境、Web 安全、加密解密、密码爆
    经常会有大学生粉丝朋友私信小强,想通过打CTF比赛镀金,作为进入一线互联网大厂的门票。但是在CTF做题很多的时候都会用到工具,所以在全网苦寻CTF比赛工具安装包!关于我有不少阅读过我文章的伙伴都知道,我曾就职于某大厂安全联合实验室。从事网络安全行业已经好几年,积累了丰富......
  • 分享一个开源的文件MD5、Hash值等校验的小工具
    官方主页https://github.com/dragonyee/MyHash软件截图介绍一款采用并行计算,充分利用多核CPU性能,快速计算文件哈希值的工具。功能特点:1、只支持常用的CRC32、MD5、SHA1、SHA256、SHA512算法;2、支持多核CPU并行计算,大幅提高计算速度;3、支持多个文件或文件夹拖放操作;4、支......
  • 腾讯云对接来此加密:实现域名自动验证 快速申请证书
    利用腾讯云DNS解析接口,实现自动配置域名解析,达到自动验证的目的。 以下是具体获取API密钥,添加到来此加密网站的步骤:1、登录腾讯云后台。2、在左上角点击头像小图标,在展开的面板上,点击[访问管理]3、在新打开的页面中找到[用户列表]菜单,点击。4、在[用户列表]界面上点击[新......
  • php加密与解密是什么?php加密与解密技术有哪些【超全解析】
    数据安全成为了我们不可忽视的重要问题。PHP作为一种广泛应用的Web开发语言,其加密与解密技术在保障数据安全方面扮演着至关重要的角色。今天,我们就来深入解析PHP中的加密与解密技术,帮助大家更好地理解和应用这些技术,确保数据的安全传输和存储。一、PHP加密与解密的基本概......
  • 加密DNS有什么用?
    在当今数字化高速发展的时代,网络安全和隐私保护成为人们日益关注的焦点。而加密DNS作为一种新兴的技术手段,正逐渐发挥着重要的作用。首先我们先来了解下什么是加密DNS,它究竟是什么?加密DNS(DomainNameSystem),简单来说,是一种对域名系统的查询和响应进行加密保护的技术。加密DNS......
  • 常用的10款文件加密软件分享|2024办公文件怎么加密?赶快码住!
    在2024年,数据泄露和信息被盗的风险日益增加,因此,文件加密成为了保护敏感信息的重要手段。本文将介绍10款常用的文件加密软件,帮助您在办公中确保文件的安全。1.Ping32Ping32是一款专为企业和个人设计的文件加密软件,具备多层次的安全防护机制。它支持AES-256加密算法,并提供文......