首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >低于Java7的Cipher.updateAAD()

低于Java7的Cipher.updateAAD()
EN

Stack Overflow用户
提问于 2017-01-24 03:00:56
回答 1查看 271关注 0票数 0

如何在API19(Java7)以下使用cipher.updateAAD()?我知道我可以使用BouncyCastle,但它不提供用于AEAD加密和解密的后端。有没有第三方的库?我正在使用AES/GCM/NoPadding

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-26 22:45:42

实际上,BouncyCastle提供了我需要的所有东西,包括AAD。对于AES/GCM,我们可以使用以下方法:

代码语言:javascript
复制
    static byte[] gcmDecrypt(byte[] ct, byte[] key, byte[] iv, byte[] aad) throws Exception {
        AEADParameters parameters = new AEADParameters(new KeyParameter(key), 128, iv, aad);
        GCMBlockCipher gcmEngine = new GCMBlockCipher(new AESFastEngine());
        gcmEngine.init(false, parameters);
        byte[] pt = new byte[gcmEngine.getOutputSize(ct.length)];
        int len = gcmEngine.processBytes(ct, 0, ct.length, pt, 0);
        gcmEngine.doFinal(pt, len);
        return pt;
    }

    static byte[] gcmEncrypt(byte[] pt, byte[] key, byte[] iv, byte[] aad) throws Exception {
        AEADParameters parameters = new AEADParameters(new KeyParameter(key), 128, iv, aad);
        GCMBlockCipher gcmEngine = new GCMBlockCipher(new AESFastEngine());
        gcmEngine.init(true, parameters);
        byte[] ct = new byte[gcmEngine.getOutputSize(pt.length)];
        int len = gcmEngine.processBytes(pt, 0, pt.length, ct, 0);
        gcmEngine.doFinal(ct, len);
        return ct;
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41813703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档