我想解密AES-256-GCM数据。据我所知,GCM不需要MAC,但SecretBox在指定mac: Mac.empty时给了我异常SecretBox has wrong message authentication code (MAC)
下面是我的解密代码片段
final algorithm = AesGcm.with256bits();
final decryptedBody = await algorithm.decrypt(
SecretBox(
encryptedResponse,
nonce: decryptionNonce,
mac: Mac.empty,
),
secretKey: key,
);有没有一种不用MAC就能解密的方法?因为我不能从密文的来源得到MAC。接收到的密文为<nonce>.<ctext>
据我所知,GCM不需要
。
我是密码学的初学者,所以这句话可能是不正确的,如果错了,请改正。
发布于 2022-11-09 14:30:00
由于@Topaco的评论,我设法解决了这个问题。
密文是<actualCipherText><MAC>的组合。MAC作为密文的最后16个字节附加。
下面是我的代码片段。
var encryptedData = YOUR_DATA;
//Getting the last 16 bytes
var mac = encryptedData.sublist(encryptedData.length - 16);
//Separating the ciphertext from the mac
encryptedData = encryptedData.sublist(0, encryptedData.length - 16);
//Decrypting
final decryptedData = await algorithm.decrypt(
SecretBox(
encryptedData,
nonce: decryptionNonce,
mac: Mac(mac),
),
secretKey: key,
);https://stackoverflow.com/questions/74365317
复制相似问题