首页 > 其他分享 >密码加密

密码加密

时间:2024-10-24 13:44:17浏览次数:7  
标签:return String 密码 finalPassword 加密 password salt

package org.security;


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

import java.util.UUID;
import cn.hutool.core.util.StrUtil;
/**
 * @author 50649
 */
public class PasswordUtils{

    /**
     * 1.加盐并生成最终的密码
     * @param password 明文的密码
     * @return 最终生成的密码
     */
    public static String encrypt(String password){
        //a.产生盐值
        //UUID.randomUUID()会生成32位数字+4位-,是随机的唯一的,将4位-去掉就得到32位数字的盐值
        String salt = UUID.randomUUID().toString().replace("-","");
        //生成加盐后的密码(需要使用MD5)
        String saltPassword = DigestUtils.md5Hex((salt + password).getBytes());
        //生成最终的密码格式
        String finalPassword = salt + "$" + saltPassword;
        return finalPassword;
    }

    /**
     * 2.加盐并生成最终密码格式(方法一的重载),区别于上面的方法:这个方法是用来解密的,给定了盐值,生成一个最终密码,
     后面要和正确的最终密码进行比对
     * @param password 需要验证的明文密码
     * @param salt
     * @return
     */
    public static  String encrypt(String password, String salt){
        //1.生成一个加密后的密码
        String saltPassword = DigestUtils.md5Hex((salt + password).getBytes());
        //2.生成最终的密码(待验证)
        String finalPassword = salt + "$" + saltPassword;
        return finalPassword;
    }

    /**
     * 3.验证密码
     * @param inputPassword  登录用户输入的明文密码
     * @param finalPassword  数据库中实际的最终密码格式
     * @return
     */
    public static boolean check(String inputPassword, String finalPassword){
        //首先判断这两个参数到底有没有值,数据库中的最终密码是不是65位
        if(StrUtil.isNotBlank(inputPassword) && StrUtil.isNotBlank(finalPassword) && finalPassword.length() == 65){
            //a.首先从最终的密码中得到盐值
            //使用$将finalPassword划分成两个部分,前面的32位的部分就是盐值
            //注意:这里的$是被认为是一个通配符,所以要转义一下
            String salt = finalPassword.split("\\$")[0];
            //b.使用之前加密的方法,生成最终的密码格式(待验证)
            String checkPassword = encrypt(inputPassword,salt);
            if(checkPassword.equals(finalPassword)){
                return true;
            }
        }
        return false;
    }
}

  

标签:return,String,密码,finalPassword,加密,password,salt
From: https://www.cnblogs.com/xianz666/p/18499436

相关文章

  • md5加盐加密
    packageorg.security;importorg.apache.commons.codec.digest.DigestUtils;importjava.util.UUID;/***@author50649*/publicclassSecurityUtil{/***加盐加密**@parampassword*@return*/publicstaticStringenc......
  • 忘记工程密码解决
    OptionExplicitPrivateDeclareSubMoveMemoryLib"kernel32"Alias"RtlMoveMemory"_(DestinationAsLong,SourceAsLong,ByValLengthAsLong)PrivateDeclareFunctionVirtualProtectLib"kernel32"(lpAddressAs......
  • 如何给pdf文档加密码保护?(2024全新)6个靠谱pdf加密方法分享
    如何给pdf文档加密码保护?日常办公生活中,我们经常需要使用到pdf文件。作为一个打工人,我们经常需要进行文件传输交流,当你将PDF文件分享到一个群或者人数较多的平台时,为了不让其他人随意查看文件,和保护文件隐私信息不被泄露,我们会选择给文件进行加密保护。那么要如何给PDF文件进行......
  • 【文件加密系统】华企盾DSC服务程序启动失败解决办法
    问题原因:1.sa账户密码错误导致连接数据数据库失败无法启动DSC服务解决方法:用windows身份验证进入数据库更改sa用户密码:安全性>登录名>sa>右键属性>更改密码※如果显示请输入秘钥更改,使用更改完密码的sa账户登录数据库,在数据库>DSEDB>表>dbo.FileEncryptKey_TABLE_>右键编......
  • Nginx配置auth_basic认证,让用户访问指定页面时输入用户名密码认证
    配置方法:[root@localhost~]#yum-yinstallhttpd-toolsLoadedplugins:fastestmirrorLoadingmirrorspeedsfromcachedhostfileResolvingDependencies-->Runningtransactioncheck--->Packagehttpd-tools.x86_640:2.4.6-99.el7.centos.1willbeinstall......
  • 椭圆曲线密码学(ECC)和RSA对比
    椭圆曲线密码学(ECC)和RSA都是非对称加密算法,它们都使用公钥和私钥来实现加密和解密。不过,它们在数学原理和实现方式上存在一些差异:数学基础:RSA:基于大整数因数分解的难题,其安全性依赖于将一个大整数分解为两个大质数的乘积的难度。ECC:基于椭圆曲线离散对数问题(ECDLP),其安全......
  • 【CryptoJS】解密/加密
    解密/加密方法:Decrypt,EncryptimportCryptoJSfrom'crypto-js';//引用AES源码jsimportmomentfrom'moment';//constCryptoJS=require('crypto-js')constkey=CryptoJS.enc.Utf8.parse('dPCtSgMDTKAgWjY1');//十六位十六进制数作为密钥......
  • 网站数据库密码怎么修改?
    1.登录数据库管理工具使用当前的数据库管理员账号和密码登录到数据库管理工具,如MySQL的phpMyAdmin、SQLServerManagementStudio(SSMS)或PostgreSQL的pgAdmin。2.选择目标数据库在数据库管理工具中,选择需要修改密码的数据库。3.执行SQL语句根据不同的数......
  • SM2 - 公钥加密算法
    符号A,B:使用公钥密码系统的两个用户。\(a,b\):\(F_q\)中的元素,他们定义\(F_q\)上的一条椭圆曲线\(E\)。\(d_B\):用户B的私钥。\(E⁡(F_q)\):\(F_q\)上椭圆曲线\(E\)的所有有理点(包括无穷远点\(O\))组成的集合。\(F_q\):包含\(q\)个元素的有限域。\(G\):椭圆曲线的一个基点,其阶为......
  • pbootcms如何修改后台的登陆地址/账号以及密码
    1.修改后台登录地址PBootCMS默认的后台登录地址通常是 http://yourdomain.com/admin.php。为了增加安全性,可以修改后台登录地址。步骤编辑路由配置文件找到并编辑 system/route/admin.php 文件。修改 admin.php 的路由规则。例如,将 admin.php 改为 backend.php:......