1. 程式人生 > >springboot thymeleaf和shiro 整合 第三篇 密碼加鹽

springboot thymeleaf和shiro 整合 第三篇 密碼加鹽

package com.ruiguang.config;
import java.util.UUID;


import org.apache.shiro.crypto.hash.SimpleHash;
import org.apache.shiro.util.ByteSource;
import org.hibernate.boot.archive.scan.internal.PackageDescriptorImpl;
/**
 * encodePassword 方法
 * 即是加密密碼明文的方法,該方法的引數除了明文密碼 還有salt 這個是鹽 
 * 通過這個鹽,可以對密碼進一步加密,而這個鹽,這裡其實使用的是userId
 * 是通過UUID獲取的一個隨機的字串,作為使用者記錄主鍵userid的值
 * 然後它們兩個通過encodePassword 方法生成密碼暗文
 *
 */
public class PasswordUtil {
private String algorithmName = "md5";   //指定雜湊演算法為MD5,還有別的演算法如:SHA256、SHA1、SHA512
   private int hashIterations = 2;     //雜湊迭代次數 md5(md5(pwd)): new Md5Hash(pwd, salt, 2).toString()
   public void setAlgorithmName(String algorithmName) {
       this.algorithmName = algorithmName;
   }
   public void setHashIterations(int hashIterations) {
       this.hashIterations = hashIterations;
   }
   //加密:輸入明文得到密文
   public String encodePassword(String pwd, String salt) {
       //user.setSalt(randomNumberGenerator.nextBytes().toHex());
       String newPassword = new SimpleHash(
               algorithmName,
               pwd,
               ByteSource.Util.bytes(salt),
               hashIterations).toHex();


       return newPassword;
   } 
   public boolean verifyPassword(String targetPassword, String pwd, String salt){
        String newPassword = this.encodePassword(targetPassword, salt);
        if(newPassword.equals(pwd)){
            return true;
        }else{
            return false;
        }
   }
   public static void main(String[] args) {
   //salt 鹽
String uuid=UUID.randomUUID().toString().replace("-", "");
System.out.println("uuid:"+uuid);
//admin8d78869f470951332959580424d4bf4f
//密碼+鹽
String eString=new  PasswordUtil().encodePassword("123456", "admin8d78869f470951332959580424d4bf4f");
System.out.println(eString);
}
}

相關推薦

springboot thymeleafshiro 整合 密碼

package com.ruiguang.config;import java.util.UUID;import org.apache.shiro.crypto.hash.SimpleHash;import org.apache.shiro.util.ByteSource;i

springboot thymeleafshiro 整合 第二 配置許可權認證

package com.ruiguang.config;import org.apache.shiro.authc.AuthenticationException;import org.apache.shiro.authc.AuthenticationInfo;import

springboot thymeleafshiro標籤整合

這裡用的是 thymeleaf 2.x版本的 新增依賴 <dependency> <groupId>com.github.theborakompanioni</groupId> <artifactId>t

SpringBoot 2.X課程學習 | :自動配置(Auto-configuration)

一、auto-configuration introduction      自動配置是spri

深度優先廣度優先

-h oot -c 廣度優先遍歷 code 技術分享 sub depth not    PS:一個網站下除了主域名,還會有多個子域名 需要通過遍歷把所有域名取到 深度優先的算法,根據上面的截圖,爬取url的順序是A--B--D--E--I---C--F-G--

Flask 【】使用DBUtils實現數據庫連接池藍圖

exc ots eai attr_ utf safety 對象賦值 目錄結構 att 小知識: 1、子類繼承父類的三種方式 class Dog(Animal): #子類 派生類 def __init__(self,name,breed, life_value,

SpringBoot Controller

RestController註解等同於Controller註解加ResponseBody註解 根據上一篇文章我們修改HelloController的檔案如下: package com.lvzhihao.demo; import org.springframework.beans.fact

多執行緒設計模式: - 生產者-消費者模式讀寫鎖模式

一,生產者-消費者模式         生產者-消費者模式是比較常見的一種模式,當生產者和消費者都只有一個的時候,這種模式也被稱為 Pipe模式,即管道模式。      &nb

【itext學習之路】-------()對pdf文件進行加密許可權設定

上篇文章,我們學習了pdf的屬性設定,但是我們知道,在實際開發中,如果pdf文件被黑客盜取的話,那麼pdf中的資訊就會被洩露,因此本篇文章將會介紹pdf的加密設定,並且設定許可權。 首先我們要說明的是,itext中對pdf文件的加密包括兩部分,第一部分是使用者密

Shiro安全框架| Shiro的認證,授權

  Shiro的認證 接下來是在IDEA進行Shiro的學習,新建一個Springboot工程,除了一些預設的依賴,這裡需要引入apache.shiro安全框架依賴,以及做單元測試的依賴。 1<dependencies> 2   &

:Spring Boot整合MyBatis

本文主要講解如何在Spring Boot下整合MyBatis並訪問資料庫。MyBatis 是一款優秀的持久層框架,它支援定製化 SQL、儲存過程以及高階對映。(如不瞭解點選前往) 環境依賴 修改 POM 檔案,新增mybatis-spring-boot-starter依賴。值得注

Python 語言學習 :陣列型別(列表、字典元組)

列表和欄位都可以在原處進行修改,可以按照需求增長或縮短,並且可以包含任何型別的物件或被巢狀。列表和字典儲存的是物件的引用,而不是拷貝。 一,列表 列表是有序的序列,每一個列表項的順序是固定的,這使得列表可以通過指定的偏移來索引和分片。列表是可變的序列,支援在原處修改。 列表項可以是任何型別,或物件,也可

深入理解定時器系列——定時器應用(時鐘、倒計時、秒錶鬧鐘)

前面的話   本文屬於定時器的應用部分,分別用於實現與時間相關的四個應用,包括時鐘、倒計時、秒錶和鬧鐘。與時間相關需要用到時間和日期物件Date,詳細情況移步至此 時鐘   最簡單的時鐘製作辦法是通過正則表示式的exec()方法,將時間物件的字串中的時間部分截取出來,使用定時器重新整理即可 &

深入理解javascript函式進階系列——函式節流函式防抖

前面的話   javascript中的函式大多數情況下都是由使用者主動呼叫觸發的,除非是函式本身的實現不合理,否則一般不會遇到跟效能相關的問題。但在一些少數情況下,函式的觸發不是由使用者直接控制的。在這些場景下,函式有可能被非常頻繁地呼叫,而造成大的效能問題。解決效能問題的處理辦法就是函式節流和函式防抖。本

SpringBoot入門系列: 日誌輸出

Java程式,日誌輸出,我認為是第一位的,把它的應用拿到這裡。 Spring-Boot對日誌的處理,和我們往常的處理完全可以一致,通過logback.xml進行處理,即使有更先進的東西,我們也不用去管它。 這裡,為了簡便,我們任然使用前一篇的工程spring-boot-sa

易筋SpringBoot 2.1 | :RestTemplate請求HTTP(1)

寫作時間:2018-12-26 Spring Boot: 2.1 ,JDK: 1.8, IDE: IntelliJ IDEA, 說明 傳統情況下在java程式碼裡訪問restful服務,一般使用Apache的HttpClient。不過此種方法使用起來太過繁瑣。spring提供了一種簡

sql效能優化之mybait接收多資料集(分頁資料count資料)

廢話不多說,直接上程式碼: 1、xml程式碼: <!-- 獲取學生列表資料-分頁-+count資料 --> <select id="getStudentManagePage" re

重溫Java經典教程(The Java™ Tutorials)-Java語言-第二章-2.1類物件

巢狀類 巢狀類幾種型別 The Java programming language allows you to define a class within another class. Such a class is called a nested class and

: Docker 獲取推送映象

1. 查詢映象 方法一 Docker Hub 的官方網站 https://hub.docker.com/ 方法二 命令查詢 docker search [OPTIONS] TERM #例1 docker search mysql ##例1 查詢關注1000以

KETTLE調度:Windows下調度Dos腳本編寫遇到的一些問題解決

p s off ati ech 存儲 %s left 天數 mar   前言:Kettle在Windows機器上常常依賴批處理腳本來完成,本文記錄使用KETTLE過程中遇到命名參數、中文壓縮包解壓時批處理腳本是怎麽處理的。 1、中文壓縮包解壓   最近接到一個數據采集工