国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

解決JAVA非對(duì)稱(chēng)加密不同系統(tǒng)加密結(jié)果不一致的問(wèn)題

瀏覽:7日期:2022-08-23 11:39:06

最近在做一個(gè)項(xiàng)目,需要用到非對(duì)稱(chēng)加密,但是出現(xiàn)一個(gè)很詭異的情況,本地開(kāi)發(fā)環(huán)境是Windows環(huán)境,測(cè)試環(huán)境是Linux環(huán)境,出現(xiàn)一個(gè)問(wèn)題, 那就是本地環(huán)境與開(kāi)發(fā)環(huán)境同一個(gè)私鑰字符串加密加密同一個(gè)信息,得到的加密結(jié)果不一樣。

經(jīng)過(guò)查詢網(wǎng)絡(luò)得知,這是由于填充的規(guī)則不同導(dǎo)致。

原來(lái)的加密的部分代碼

byte[] keyBytes = Base64.decodeBase64(privateKey);PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);KeyFactory keyFactory = KeyFactory.getInstance('RSA');Key privateK = keyFactory.generatePrivate(pkcs8KeySpec) ; Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());cipher.init(Cipher.DECRYPT_MODE, privateK);

修改后的加密的部分代碼

byte[] keyBytes = Base64.decodeBase64(privateKey);PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);Key privateK = keyFactory.generatePrivate(pkcs8KeySpec);// Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());Cipher cipher = Cipher.getInstance('RSA/ECB/PKCS1Padding');cipher.init(Cipher.ENCRYPT_MODE, privateK);

因此差異部分就是Cipher cipher的獲取存在差異導(dǎo)致不同系統(tǒng)下同一秘鑰,同一信息加密結(jié)果不一致

補(bǔ)充知識(shí):Java RSA3加密時(shí)因編碼不同導(dǎo)致結(jié)果不同

最近遇到一個(gè)問(wèn)題,使用RSA3加密及驗(yàn)證時(shí)候,因?yàn)槲曳脚c客戶方工程的編碼格式不同,導(dǎo)致我方使用私鑰加密后,客戶使用公鑰解密失敗。

最后問(wèn)題定位到src.getBytes()代碼,因我方工程使用GBK編碼,src.getBytes()執(zhí)行時(shí)獲取默認(rèn)編碼為GBK(即src.getBytes('GBK')),而客戶方工程使用UTF-8編碼,解密執(zhí)行src.getBytes()時(shí)獲取默認(rèn)編碼為UTF-8(即src.getBytes('UTF-8'))。造成解密校驗(yàn)失敗。

解決JAVA非對(duì)稱(chēng)加密不同系統(tǒng)加密結(jié)果不一致的問(wèn)題

解決方法:加密時(shí)設(shè)置UTF-8編碼格式—src.getBytes('UTF-8',如下:

解決JAVA非對(duì)稱(chēng)加密不同系統(tǒng)加密結(jié)果不一致的問(wèn)題

測(cè)試(file的默認(rèn)編碼為GBK):

解決JAVA非對(duì)稱(chēng)加密不同系統(tǒng)加密結(jié)果不一致的問(wèn)題

解決JAVA非對(duì)稱(chēng)加密不同系統(tǒng)加密結(jié)果不一致的問(wèn)題

以上這篇解決JAVA非對(duì)稱(chēng)加密不同系統(tǒng)加密結(jié)果不一致的問(wèn)題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 新闻| 鄂伦春自治旗| 巢湖市| 皮山县| 南溪县| 庆阳市| 迭部县| 张掖市| 喜德县| 朝阳县| 灯塔市| 潜山县| 塘沽区| 武清区| 连城县| 揭西县| 曲周县| 马鞍山市| 福建省| 松阳县| 观塘区| 新昌县| 团风县| 惠水县| 札达县| 玛多县| 陆丰市| 启东市| 大宁县| 荥阳市| 盐亭县| 元谋县| 万全县| 汝城县| 莲花县| 多伦县| 十堰市| 福清市| 达孜县| 高平市| 卢氏县|