日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JAVA——DES/ECB/PKCS7Padding加密算法[Cannot find any provider supporting DESEDE/CBC/PKCS7Padding]解决方案

發布時間:2024/10/5 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA——DES/ECB/PKCS7Padding加密算法[Cannot find any provider supporting DESEDE/CBC/PKCS7Padding]解决方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基本概念

DES算法:密碼體制中的對稱密碼體制,又被稱為美國數據加密標準,是1972年美國IBM公司研制的對稱密碼體制加密算法。 明文按64位進行分組,密鑰長64位,密鑰事實上是56位參與DES運算(第8、16、24、32、40、48、56、64位是校驗位, 使得每個密鑰都有奇數個1)分組后的明文組和56位的密鑰按位替代或交換的方法形成密文組的加密方法。?

基本原理:DES 使用一個 56 位的密鑰以及附加的 8 位奇偶校驗位,產生最大 64 位的分組大小。這是一個迭代的分組密碼,使用稱為 Feistel 的技術,其中將加密的文本塊分成兩半。使用子密鑰對其中一半應用循環功能,然后將輸出與另一半進行"異或"運算;接著交換這兩半,這一過程會繼續下去,但最后一個循環不交換。DES 使用 16 個循環,使用異或,置換,代換,移位操作四種基本運算。

ECB(Electronic Codebook,電碼本)模式:分組密碼的一種最基本的工作模式。在該模式下,待處理信息被分為大小合適的分組,然后分別對每一分組獨立進行加密或解密處理。?

PKCS7Padding:假設數據長度需要填充n(n>0)個字節才對齊,那么填充n個字節,每個字節都是n;如果數據本身就已經對齊了,則填充一塊長度為塊大小的數據,每個字節都是塊大小。?

?DES/ECB/PKCS7Padding加密算法:在Java開發中,用到的DES的ECB加密模式、PKCS7Padding填充方式,Java目前僅支持PKCS5Padding填充模式,

問題描述

java.security.NoSuchAlgorithmException: Cannot find any provider supporting AES/CBC/PKCS7Padding

問題分析

Android支持PKCS7Padding填充方式,而java默認支持是PKCS5Padding填充方式?。

目前Java要實現PKCS7Padding填充模式的加密,需要借助第三方Jar包才可以實現,就是在初始化的時候 Security.addProvider 增加第三方的提供者,解密的時候還是按照原來的方式。

解決方案

BouncyCastle官網下載組件以支持PKCS7Padding填充。

方法一:手動添加

1、BouncyCastle官網

下載對應JDK版本的jar包

例:JDK1.8,下載最新版bcprov-ext-jdk15on-159.jar

2、把下載的bcprov-ext-jdk15on-159.jar分別復制到

${jdk_home}\jre\lib\ext

(eg:D:\Java\jdk1.8.0_144\jre\lib\ext)

${jre_home}\lib\ext

(eg:D:\Java\jre1.8.0_144\lib\ext)

3、修改java.security文件

${jdk_home}\jre\lib\security\java.security

(eg:D:\Java\jdk1.8.0_144\jre\lib\security\java.security)

${jre_home}\lib\security\java.security

(eg:D:\Java\jre1.8.0_144\lib\security\java.security)

4、添加Java的默認加密提供者

security.provider.11=org.bouncycastle.jce.provider.BouncyCastleProvider

在使用AES前,加入Security.addProvider(new BouncyCastleProvider());

即可,如果顯示該class還沒導入,那就手動導入到該工程就好

?方法二:Maven項目

Maven

<dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15on</artifactId><version>1.56</version></dependency>

添加?默認加密提供者

static { Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());}

?

參考文章

https://www.cnblogs.com/cratos/p/3908412.html

https://www.jianshu.com/p/de84d355c96d

https://blog.csdn.net/qq_29109181/article/details/79938896

https://blog.csdn.net/gs12software/article/details/83899389

https://blog.csdn.net/VincentlVL/article/details/99219846

https://blog.csdn.net/mashengjun1989/article/details/81698271

https://blog.csdn.net/P923284735/article/details/84377128

總結

以上是生活随笔為你收集整理的JAVA——DES/ECB/PKCS7Padding加密算法[Cannot find any provider supporting DESEDE/CBC/PKCS7Padding]解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。