JAVA對(duì)稱加密算法PBE定義與用法實(shí)例分析
本文實(shí)例講述了JAVA對(duì)稱加密算法PBE定義與用法。分享給大家供大家參考,具體如下:
一 AES、DES和3DES在使用上比較一致
二 PBE算法優(yōu)點(diǎn)
三 PBE介紹
1、PBE:Password Based Encryption 基于口令加密。通過(guò)加Salt來(lái)增強(qiáng)安全性。
2、對(duì)已有算法的包裝
3、JDK和BC的實(shí)現(xiàn)
4、通過(guò)加Salt來(lái)增強(qiáng)安全性
四 常見算法
五代碼實(shí)現(xiàn)
package com.imooc.security.pbe; import java.security.Key; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.PBEKeySpec; import javax.crypto.spec.PBEParameterSpec; import org.apache.commons.codec.binary.Base64; public class ImoocPBE { private static String src = "cakin24 security pbe"; public static void main(String[] args) { jdkPBE(); } public static void jdkPBE() { try { //初始化鹽 SecureRandom random = new SecureRandom(); byte[] salt = random.generateSeed(8); //口令與密鑰 String password = "cakin24"; PBEKeySpec pbeKeySpec = new PBEKeySpec(password.toCharArray()); SecretKeyFactory factory = SecretKeyFactory.getInstance("PBEWITHMD5andDES"); Key key = factory.generateSecret(pbeKeySpec); //加密 PBEParameterSpec pbeParameterSpec = new PBEParameterSpec(salt, 100); Cipher cipher = Cipher.getInstance("PBEWITHMD5andDES"); cipher.init(Cipher.ENCRYPT_MODE, key, pbeParameterSpec); byte[] result = cipher.doFinal(src.getBytes()); System.out.println("jdk pbe encrypt : " + Base64.encodeBase64String(result)); //解密 cipher.init(Cipher.DECRYPT_MODE, key, pbeParameterSpec); result = cipher.doFinal(result); System.out.println("jdk pbe decrypt : " + new String(result)); } catch (Exception e) { e.printStackTrace(); } } }
六 實(shí)現(xiàn)效果
jdk pbe encrypt : UKXIqWmtrNBpJ1ayTgGWmpswSLPLel5X
jdk pbe decrypt : cakin24 security pbe
七 應(yīng)用場(chǎng)景
PS:關(guān)于加密解密感興趣的朋友還可以參考本站在線工具:
文字在線加密解密工具(包含AES、DES、RC4等):
http://tools.jb51.net/password/txt_encode
MD5在線加密工具:
http://tools.jb51.net/password/CreateMD5Password
在線散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt
在線MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha
在線sha1/sha224/sha256/sha384/sha512加密工具:
http://tools.jb51.net/password/sha_encode
更多關(guān)于java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)學(xué)運(yùn)算技巧總結(jié)》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java字符與字符串操作技巧總結(jié)》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
- Java對(duì)稱加密算法DES實(shí)例詳解
- java 非對(duì)稱加密算法DH實(shí)現(xiàn)詳解
- java 非對(duì)稱加密算法RSA實(shí)現(xiàn)詳解
- java 對(duì)稱加密算法實(shí)現(xiàn)詳解
- Java實(shí)現(xiàn)的對(duì)稱加密算法AES定義與用法詳解
- Java實(shí)現(xiàn)的對(duì)稱加密算法3DES定義與用法示例
- Java 對(duì)稱加密幾種算法分別實(shí)現(xiàn)
- java基于Des對(duì)稱加密算法實(shí)現(xiàn)的加密與解密功能詳解
- java基于AES對(duì)稱加密算法實(shí)現(xiàn)的加密與解密功能示例
- JAVA加密算法- 非對(duì)稱加密算法(DH,RSA)的詳細(xì)介紹
- java加密算法分享(rsa解密、對(duì)稱加密、md5加密)
- Java 實(shí)現(xiàn)對(duì)稱加密算法
相關(guān)文章
Spring boot進(jìn)行參數(shù)校驗(yàn)的方法實(shí)例詳解
這篇文章主要介紹了Spring boot進(jìn)行參數(shù)校驗(yàn)的方法實(shí)例詳解,非 常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2018-05-05在java中使用SPI創(chuàng)建可擴(kuò)展的應(yīng)用程序操作
這篇文章主要介紹了在java中使用SPI創(chuàng)建可擴(kuò)展的應(yīng)用程序操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09SpringBoot深入分析運(yùn)行原理與功能實(shí)現(xiàn)
我們發(fā)現(xiàn)springBoot程序開發(fā)比spring程序編寫起來(lái)容易的多。配置簡(jiǎn)潔,依賴關(guān)系簡(jiǎn)單,啟動(dòng)運(yùn)行容易。那么結(jié)下了我們我們就要思考一下入門程序中的這些功能是怎么實(shí)現(xiàn)的2022-09-09如何實(shí)現(xiàn)Java線程安全問(wèn)題
這篇文章主要介紹了如何實(shí)現(xiàn)Java線程安全問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12Java的GUI編程之列表和組合框的設(shè)計(jì)使用
這篇文章主要介紹了Java的GUI編程之列表和組合框的設(shè)計(jì)使用,是Java圖形界面編程中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-10-10SpringBoot 監(jiān)控管理模塊actuator沒(méi)有權(quán)限的問(wèn)題解決方法
這篇文章主要介紹了SpringBoot 監(jiān)控管理模塊actuator沒(méi)有權(quán)限的問(wèn)題解決方法,需要的朋友可以參考下2017-12-12Spring Boot + Vue 前后端分離項(xiàng)目如何踢掉已登錄用戶
這篇文章主要介紹了Spring Boot + Vue 前后端分離項(xiàng)目如何踢掉已登錄用戶,需要的朋友可以參考下2020-05-05JAVA 并發(fā)容器的一些易出錯(cuò)點(diǎn)你知道嗎
今天給大家?guī)?lái)的文章是Java并發(fā)編程的相關(guān)知識(shí),文中對(duì)java同步容器與并發(fā)容器做了非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-09-09基于Java的界面開發(fā)詳細(xì)步驟(用戶注冊(cè)登錄)
通過(guò)一段時(shí)間Java Web的學(xué)習(xí),寫一個(gè)簡(jiǎn)單的注冊(cè)登陸界面來(lái)做個(gè)總結(jié),這篇文章主要給大家介紹了基于Java的界面開發(fā)(用戶注冊(cè)登錄)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01