第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

嘗試在 GCM 模式下解密消息時(shí)出現(xiàn) AEADBadTagException

嘗試在 GCM 模式下解密消息時(shí)出現(xiàn) AEADBadTagException

qq_笑_17 2021-08-03 13:32:45
我正在編寫(xiě)一個(gè)應(yīng)用程序,它有很多安全限制:它需要安全加密存儲(chǔ)文件,并且必須能夠解密它們。此外,操作員需要能夠在沒(méi)有應(yīng)用程序的情況下解密文件。為了存檔,我KeyPair在我的 PC 上生成了一個(gè),將公共部分放在我的應(yīng)用程序中,在應(yīng)用程序中生成一個(gè)AES SecretKey密鑰,用我的公鑰加密并保存它(用于操作員目的),然后將未加密的密鑰放在AndroidKeyStore.要加密消息,我收到SecretKeyfrom KeyStore,加密我的消息,獲取IVI used 和 encryptedSecretKey,然后按照定義的順序?qū)⑺鼈儗?xiě)入字節(jié)數(shù)組 (iv->encryptedSecretKey->encryptedMessage)。要解密,我反向嘗試相同的方法:獲取字節(jié)數(shù)組,讀取 iv 和 encryptedSecretKey,并將其余的 (encryptedMessage) 傳遞給我的密碼進(jìn)行解密。問(wèn)題是,這cipher.doFinal(encryptedMessage)是拋出 javax.crypto.AEADBadTagException由android.security.KeyStoreException: Signature/MAC verification failed.我已經(jīng)檢查過(guò)加密的消息和我想要解密的消息是完全一樣的。我不知道我做錯(cuò)了什么。順便說(shuō)一下,minSdkVersion 是 25,所以比 Marshmallow 高更新:修復(fù)Cipher.DECRYPT_MODE了ENCRYPT_MODE將 SecretKey thx 保存到 James K Polk 的評(píng)論如果我從BlockMode GCMBlockMode切換CBC(并更改GCMParameterSpec為IvParamterSpec但失去 GCM 模式的驗(yàn)證,它會(huì)起作用。
查看完整描述

1 回答

?
弒天下

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超8個(gè)贊

操作員界面至少存在兩個(gè)問(wèn)題。首先,您使用錯(cuò)誤的密碼模式 RSA 加密密鑰:您在應(yīng)該使用加密時(shí)使用了 DECRYPT 模式。其次,您使用的是沒(méi)有任何填充的 RSA。您需要使用真正的填充模式,建議使用其中一種 OEAP 填充模式。

調(diào)整用于保存結(jié)果的緩沖區(qū)大小時(shí),加密端發(fā)生錯(cuò)誤:

ByteBuffer buffer = ByteBuffer.allocate(IV_BIT_LEN + encryptedSecretKey.length + cryptedBytes.length);

分配太多空間。IV_BIT_LEN可能應(yīng)該更改為IV_SIZE以獲得正確大小的ByteBuffer.

最后一個(gè)錯(cuò)誤是GCMParameterSpec在解密端設(shè)置 時(shí)沒(méi)有考慮到 GCM 認(rèn)證標(biāo)簽長(zhǎng)度。您在此行中初始化了標(biāo)簽長(zhǎng)度

GCMParameterSpec parameterSpec = new GCMParameterSpec(IV_BIT_LEN, iv);

但這是不正確的,標(biāo)簽長(zhǎng)度與 IV 無(wú)關(guān)。由于您沒(méi)有在加密端明確設(shè)置 GCMParameterSpec,因此您獲得了默認(rèn)標(biāo)簽長(zhǎng)度,恰好是 128。

您可以通過(guò)調(diào)用cipher.getParameters().getParameterSpec(GCMParameterSpec.class)獲取參數(shù)規(guī)范來(lái)檢索加密端的標(biāo)簽長(zhǎng)度 。從中您可以檢索標(biāo)簽長(zhǎng)度和 iv。您可能應(yīng)該將標(biāo)簽長(zhǎng)度(16 字節(jié) = 128 位)視為硬編碼常量,而不是傳輸它。接收器應(yīng)該類(lèi)似地假設(shè)標(biāo)簽長(zhǎng)度是 128 位。


查看完整回答
反對(duì) 回復(fù) 2021-08-04
  • 1 回答
  • 0 關(guān)注
  • 1506 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)