在我的Ffltter应用程序中,我需要解密来自ModulR API的安全令牌. 首先,我需要生成RSA密钥,模块R将使用它来生成安全令牌.
生成令牌时,我会收到一个加密的SymmetricKey、一个初始化向量(Iv)和一个需要解密的令牌.
加密的SymmetricKey使用RSA ECB密码和OAEP和散列SHA-256进行编码.
然后,使用解密的加密的SymmetricKey,我可以解密用没有填充的AES GCM密码编码的令牌.
我用的是PointtyCastle套餐.
这是我的代码:
/// DECRYPT SYMMETRIC KEY
final p = OAEPEncoding.withSHA256(RSAEngine());
p.init(false, PrivateKeyParameter<RSAPrivateKey>(modulrKey.keypair.privateKey.asPointyCastle));
final decryptedSymetricKeyBytes = p.process(base64Decode(result.encryptedSymmetricKey));
/// AES-GCM ALGO
final algo = AesGcm.with128bits();
/// DECODE INIT VECTOR
final decodedIv = base64Decode(result.initialisationVector);
/// AES KEY
final aesKey = await algo.newSecretKeyFromBytes(decryptedSymetricKeyBytes);
/// DECRYPT TOKEN
final decodedToken = base64Decode(result.token);
final secretBox = SecretBox(decodedToken, nonce: decodedIv, mac: Mac.empty);
final decryptedTokenBytes = await algo.decrypt(secretBox, secretKey: aesKey);
final decryptedToken = base64Encode(decryptedTokenBytes);
但是当我执行它时,我得到这个错误:
SecretBox的报文验证码(MAC)错误
你有什么办法解决这个问题吗? 此外,这是MODBUR文档:https://modulr.readme.io/docs/retrieve-secure-card-details