国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

java中MD5加密

這篇具有很好參考價值的文章主要介紹了java中MD5加密。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

MD5加密

MD5加密是一種常見的加密方式,我們經(jīng)常用在保存用戶密碼和關(guān)鍵信息上。那么它到底有什么,又什么好處呢,會被這么廣泛的運用在應(yīng)用開發(fā)中。

什么是MD5

MD5加密全程是Message-Digest Algoorithm 5(信息-摘要算法),它對信息進(jìn)行摘要采集,再通過一定的位運算,最終獲取加密后的MD5字符串。
  例如我們要加密一篇文章,那么我們會隨機(jī)從每段話或者每行中獲取一個字,把這些字統(tǒng)計出來后,再通過一定的運算獲得一個固定長度的MD5加密后信息。因此,其很難被逆向破解。

MD5有哪些特點

  1. 針對不同長度待加密的數(shù)據(jù)、字符串等等,其都可以返回一個固定長度的MD5加密字符串。(通常32位的16進(jìn)制字符串);
  2. 其加密過程幾乎不可逆,除非維護(hù)一個龐大的Key-Value數(shù)據(jù)庫來進(jìn)行碰撞破解,否則幾乎無法解開。
  3. 運算簡便,且可實現(xiàn)方式多樣,通過一定的處理方式也可以避免碰撞算法的破解。
  4. 對于一個固定的字符串。數(shù)字等等,MD5加密后的字符串是固定的,也就是說不管MD5加密多少次,都是同樣的結(jié)果。

java中實現(xiàn)MD5加密方式

1. 使用JDK自帶的API實現(xiàn)

加單實現(xiàn)如下

 
@Test
void test1() {
String pwd = "123456";
try {
MessageDigest md = MessageDigest.getInstance("MD5");// 生成一個MD5加密計算摘要
md.update(pwd.getBytes());// 計算md5函數(shù)
/**
* digest()最后確定返回md5 hash值,返回值為8位字符串。
* 因為md5 hash值是16位的hex值,實際上就是8位的字符
* BigInteger函數(shù)則將8位的字符串轉(zhuǎn)換成16位hex值,用字符串來表示;得到字符串形式的hash值
* 一個byte是八位二進(jìn)制,也就是2位十六進(jìn)制字符(2的8次方等于16的2次方)
*/
String hashedPwd = new BigInteger(1, md.digest()).toString(16);// 16是表示轉(zhuǎn)換為16進(jìn)制數(shù)
System.out.println(hashedPwd);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}

結(jié)果:

 
e10adc3949ba59abbe56e057f20f883e

2. 使用Spring的DigestUtils工具類

 
@Test
void testMD5() {
String pwd = "123456";
// 基于spring框架中的DigestUtils工具類進(jìn)行密碼加密
String hashedPwd1 = DigestUtils.md5DigestAsHex((pwd).getBytes());
System.out.println(hashedPwd1);
}

結(jié)果:

 
e10adc3949ba59abbe56e057f20f883e

改進(jìn)- 加鹽

一般加密算法固定,很容易破解,安全系數(shù)低,有很多網(wǎng)站可以直接破解密文。為了提高安全性,可以采取加鹽的方式。生成一組隨機(jī)串,保存在數(shù)據(jù)庫中,然后混雜在原來的密碼中,再通過加密算法加密,存進(jìn)數(shù)據(jù)庫中

@Test
void testMD5() {
String pwd = "123456";
String salt = UUID.randomUUID().toString();
// 基于spring框架中的DigestUtils工具類進(jìn)行密碼加密
String hashedPwd1 = DigestUtils.md5DigestAsHex((pwd + salt).getBytes());
System.out.println(hashedPwd1);
}

結(jié)果:

ce504625e463008803c1b875a0bd87a3

改進(jìn)-加次數(shù)

多加密幾次也可增加破解的難度, 一般可用于交易碼等

@Test
void testMD5() {
String pwd = "123456";
String salt = UUID.randomUUID().toString();
// 基于spring框架中的DigestUtils工具類進(jìn)行密碼加密
String hashedPwd1 = DigestUtils.md5DigestAsHex((pwd + salt).getBytes());
hashedPwd1 = DigestUtils.md5DigestAsHex((hashedPwd1 + salt).getBytes()); // +1次
hashedPwd1 = DigestUtils.md5DigestAsHex((hashedPwd1 + salt).getBytes()); // +2次
// ... 可使用循環(huán)等
System.out.println(hashedPwd1);
}

結(jié)果:

22cca33f84e7c72132dbff6fcfc60934

3. 使用Shiro的simpleHash進(jìn)行加密

當(dāng)然, 我們也可以加鹽加次數(shù)等

如下代碼

@Test
void testShiroMD5() {
String pwd = "123456"; // 密碼
String salt = UUID.randomUUID().toString(); // 鹽
/**
* 參數(shù)1: 加密方式
* 參數(shù)2: 要加密的字符串
* 參數(shù)3: 鹽
* 參數(shù)4: 加密次數(shù)
*/
SimpleHash sh = new SimpleHash("MD5", pwd, salt, 5); // 定義simpleHash對象
String hashedPwd = sh.toHex(); // 生成16進(jìn)制密文
System.out.println(hashedPwd); // 輸出
}

結(jié)果文章來源地址http://www.zghlxwxcb.cn/news/detail-446020.html

b37e9129e9a6c1cecc8d34c60315fd8d

到了這里,關(guān)于java中MD5加密的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • java中MD5加密

    MD5加密是一種常見的加密方式,我們經(jīng)常用在保存用戶密碼和關(guān)鍵信息上。那么它到底有什么,又什么好處呢,會被這么廣泛的運用在應(yīng)用開發(fā)中。 MD5加密全程是Message-Digest Algoorithm 5(信息-摘要算法),它對信息進(jìn)行摘要采集,再通過一定的位運算,最終獲取加密后的MD5字

    2024年02月05日
    瀏覽(19)
  • Java 實現(xiàn) MD5 加密算法

    1.1 MD5 算法介紹 MD5 消息摘要算法,英文:MD5 Message-Digest Algorithm ,一種被廣泛使用的密碼散列函數(shù),可以產(chǎn)生出一個128位(16字節(jié))的散列值(hash value),用于確保信息傳輸完整一致。 MD5 是單向加密不可逆的,也就是常說的非對稱加密,常用于用戶密碼的加密,這樣即使密

    2024年02月09日
    瀏覽(35)
  • 小程序,h5,移動端處理md5加密接口,請求數(shù)據(jù)加密方式AES-128-ECB

    小程序,h5,移動端處理md5加密接口,請求數(shù)據(jù)加密方式AES-128-ECB

    1.AES-128-ECB 表示使用AES(Advanced Encryption Standard)算法,密鑰長度為128位,工作模式為ECB(Electronic Codebook)的一種對稱加密方式。 其中: AES是一種常用的對稱加密算法,被廣泛地應(yīng)用于各種信息安全場景中。 128表示密鑰長度為128位(16字節(jié))。AES支持的密鑰長度還有192位和256位。 ECB代表電

    2024年03月28日
    瀏覽(24)
  • 前端常用的三種加密方式(MD5、base64、sha.js)

    前端常用的三種加密方式(MD5、base64、sha.js)

    作為一名優(yōu)秀的前端開發(fā)工程獅,保障用戶的信息安全、密碼義不容辭,廢話不多說,由我來介紹三種日常開發(fā)中經(jīng)常用到的加密方式。 介紹: MD5中文含義為信息-摘要算法5,就是一種信息摘要加密算法,可以將數(shù)據(jù)轉(zhuǎn)譯為另一固定長度值 特點: 壓縮性:任意長度的數(shù)據(jù),

    2024年02月06日
    瀏覽(27)
  • 前端如何加密數(shù)據(jù)--五種方式(base64加密、md5加密、sha1加密、字符串方法加密、AES加密)

    前端如何加密數(shù)據(jù)--五種方式(base64加密、md5加密、sha1加密、字符串方法加密、AES加密)

    1.base64加密(包括小寫字母a-z、大寫字母A-Z、數(shù)字0-9、符號\\\"+\\\"、\\\"/\\\"一共64個字符的字符集,另加一個“=”,實際是65個字符) 字符串轉(zhuǎn)換為base64:str64 = window.btoa(str) base64轉(zhuǎn)換為字符串:str=window.atob(str64) 2.md5加密 3.sha1加密 ? 4.字符串的編碼和解碼(JS函數(shù)的escape()和unescape())

    2024年02月16日
    瀏覽(29)
  • java 使用hutool工具進(jìn)行MD5加密

    引入依賴 MD5加密

    2024年02月16日
    瀏覽(20)
  • Java使用MD5加鹽對密碼進(jìn)行加密處理,附注冊和登錄加密解密處理

    Java使用MD5加鹽對密碼進(jìn)行加密處理,附注冊和登錄加密解密處理

    在開發(fā)的時候,有一些敏感信息是不能直接通過明白直接保存到數(shù)據(jù)庫的。最經(jīng)典的就是密碼了。如果直接把密碼以明文的形式入庫,不僅會泄露用戶的隱私,對系統(tǒng)也是極其的不厲,這樣做是非常危險的。 那么我們就需要對這些銘文進(jìn)行加密。 現(xiàn)在市場是加密的方式已經(jīng)

    2024年02月02日
    瀏覽(22)
  • uniapp使用md5加密 js使用md5加密

    uniapp使用md5加密 js使用md5加密

    文章的初衷 最近項目中使用了md5加密,為了方便還不明白怎么使用的朋友參考查閱,當(dāng)然也為了方便博主再次使用所寫 md5加密說明 可在不同平臺使用 因為使用方法是js方法去調(diào)用的所以不局限于某個平臺 我這里使用的方式是登錄的時候進(jìn)行加密,具體其他的使用方式,朋友們自

    2024年02月07日
    瀏覽(81)
  • MD5密碼加密

    密碼加密 ?????? 使用工具類的MD5功能方法,加密密碼 ?????? 注冊環(huán)節(jié): ????????????? 1. 獲取用戶輸入密碼 123456 ????????????? 2. 調(diào)用MD5加密密碼,保存新的加密密碼到數(shù)據(jù)庫 ?????? 登錄環(huán)節(jié): ????????????? 1. 獲取用戶輸入密碼 123456 ???????

    2024年02月16日
    瀏覽(18)
  • C# 實現(xiàn)MD5加密

    日常程序開發(fā)中,涉及到敏感數(shù)據(jù)內(nèi)容,通常會采取加密處理以保證數(shù)據(jù)安全,本篇文章講述了在C#中使用MD5方法加密數(shù)據(jù) MD5的全稱是message-digest algorithm 5,MD5算法屬于hash算法的一類,對消息進(jìn)行運算,產(chǎn)生一個128位的消息摘要(32位數(shù)字字母),并且加密不可逆,相同數(shù)據(jù)

    2024年02月08日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包