Java使用BouncyCastle加密
1、為什么要使用BouncyCastle?
我們平常都使用jdk自帶的加密包對(duì)數(shù)據(jù)進(jìn)行加密,加密方式也都是使用的默認(rèn)的,如果我們想選擇別的加密方式,發(fā)現(xiàn)會(huì)報(bào)錯(cuò),比如如下代碼:
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding");
cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".getBytes("UTF-8"), "AES"));
cipher.doFinal("QWEASDZS".getBytes("UTF-8"));這時(shí)候我們就需要借助BouncyCastle了。
2、如何使用BouncyCastle?
2.1、方式一
(1)去BouncyCastle官網(wǎng)下載provider的包,然后放入$JAVA_HOME\jre\lib\ext目錄下;
(2)修改配置文件$JAVA_HOME\jre\lib\security\java.security,加入一行配置:security.provider.按順序填數(shù)字=org.bouncycastle.jce.provider.BouncyCastleProvider
(3)代碼如下:
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding");
cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".getBytes("UTF-8"), "AES"));
cipher.doFinal("QWEASDZS".getBytes("UTF-8"));2.2、方式二
(1)在代碼中通過(guò)maven引入BouncyCastle的包
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.56</version>
</dependency>(2)無(wú)需像方式一一樣修改配置文件,直接在代碼中手動(dòng)添加provider:
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding");
cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".getBytes("UTF-8"), "AES"));
cipher.doFinal("QWEASDZS".getBytes("UTF-8"));3、注意點(diǎn)
出于某些原因,可能需要去官網(wǎng)下載JCE包,替換掉$JAVA_HOME\jre\lib\security目錄下的內(nèi)容,其次密鑰的長(zhǎng)度也要注意。
到此這篇關(guān)于Java使用BouncyCastle加密的文章就介紹到這了,更多相關(guān)Java BouncyCastle加密內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- java類(lèi)比C++的STL庫(kù)詳解
- java:程序包org.bouncycastle.jce.provider不存在問(wèn)題及解決
- Java的JSTL標(biāo)簽庫(kù)詳解
- Java通用BouncyCastle實(shí)現(xiàn)的DES3加密的方法
- 詳解javaweb中jstl如何循環(huán)List中的Map數(shù)據(jù)
- JavaWeb開(kāi)發(fā)之JSTL標(biāo)簽庫(kù)的使用、 自定義EL函數(shù)、自定義標(biāo)簽(帶屬性的、帶標(biāo)簽體的)
- 在JSTL EL中處理java.util.Map,及嵌套List的情況
- Java實(shí)現(xiàn)STL中的全排列函數(shù)next_permutation()
相關(guān)文章
Spring?Boot與graphql-java如何構(gòu)建高效GraphQL服務(wù)
文章介紹如何在SpringBoot中集成graphql-java庫(kù),通過(guò)定義GraphQLSchema、構(gòu)建實(shí)例及注冊(cè)Web端點(diǎn)實(shí)現(xiàn)高效數(shù)據(jù)查詢(xún)與突變操作,解決RESTAPI的過(guò)度獲取問(wèn)題,提升開(kāi)發(fā)靈活性與性能,并結(jié)合工具如ApolloClient優(yōu)化前端數(shù)據(jù)管理,感興趣的朋友跟隨小編一起看看吧2025-09-09
一文詳解SpringBoot如何優(yōu)雅地實(shí)現(xiàn)異步調(diào)用
SpringBoot想必大家都用過(guò),但是大家平時(shí)使用發(fā)布的接口大都是同步的,那么你知道如何優(yōu)雅的實(shí)現(xiàn)異步呢?這篇文章就來(lái)和大家詳細(xì)聊聊2023-03-03
Java保留兩位小數(shù)的實(shí)現(xiàn)方法
這篇文章主要介紹了 Java保留兩位小數(shù)的實(shí)現(xiàn)方法的相關(guān)資料,需要的朋友可以參考下2017-06-06
Intellij IDEA實(shí)現(xiàn)springboot熱部署過(guò)程解析
這篇文章主要介紹了Intellij IDEA實(shí)現(xiàn)springboot熱部署過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
myBatis實(shí)現(xiàn)三級(jí)嵌套復(fù)雜對(duì)象的賦值問(wèn)題
這篇文章主要介紹了myBatis實(shí)現(xiàn)三級(jí)嵌套復(fù)雜對(duì)象的賦值問(wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11
SpringBoot3?框架快速搭建與項(xiàng)目工程詳解
本文將從項(xiàng)目搭建、核心配置、分層開(kāi)發(fā)、統(tǒng)一返回與異常處理等維度,詳細(xì)講解SpringBoot3項(xiàng)目的構(gòu)建與工程設(shè)計(jì),幫助開(kāi)發(fā)者快速上手,感興趣的朋友跟隨小編一起看看吧2026-02-02
詳解springMVC兩種方式實(shí)現(xiàn)多文件上傳及效率比較
本篇文章介紹了springMVC兩種方式實(shí)現(xiàn)多文件上傳及效率比較。springMVC實(shí)現(xiàn)多文件上傳有兩種,一種是字節(jié)流的方式進(jìn)行文件上傳,另外一種是使用springMVC包裝好的解析器進(jìn)行上傳,有興趣的可以了解一下。2016-12-12

