当前位置: 首页 > 知识库问答 >
问题:

Java 7下的cipher.updateaad()

翟宏放
2023-03-14

如何使用API19(Java7)以下的cipher.updateaad()?我知道我可以使用BouncyCastle,但它不为AEAD加密和解密提供后端口。有第三方库吗?我正在使用aes/gcm/nopadding

共有1个答案

董俊晖
2023-03-14

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

    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;
    }
 类似资料:
  • 问题内容: 首先,我希望这不是问题,所以我开始了一个新话题。我不知道如何根据已经回答的问题提出问题,所以我做到了。 我对Java很陌生,以下是我的问题。我正在编写一个小型聊天程序,并且使用带有的来显示不同颜色的文本,显示笑脸和显示超链接。 我的问题是,经过一些研究,我发现问题可能是由于Java7造成的,我无法使换行器正常工作。我希望文本自动换行,并包裹在超出组件宽度的字符串中间。自动换行可以很好地

  • 我使用intellij IDEA进行开发,我注意到IDEA在Java7上运行时,maven插件在下载依赖项时出现了问题(我在Windows7)。然而,在Java6上运行它就没有这个问题了。 以下是idea.log的摘录 我按照建议做了以下几点 > 确保我的/etc/hosts文件中有 将添加到我的idea64.exe.vmoptions,因此文件如下所示 谢谢你的帮助。

  • 支持哪些版本的Java? 但是,生成失败,出现以下消息:

  • 我们已经使用jmap在Java 6下运行的大型多服务器应用程序上测量堆大小大约2年了。我们每分钟测量一次。每次测量所用的时间(经过的时间)不到1秒。 我们现在正在Java 7下测试同一个应用程序。现在突然之间,jmap通常需要10秒、20秒,有时甚至更长时间,而且它似乎慢了下来(甚至可能停止!)在那段时间里,JVM。 我们在jmap输出中看到的唯一区别(Java6和Java7之间)是关于有多少字符

  • 我创建了一个需要Java7的。jar。我有Java7(JDK和JRE),我可以双击运行。jar。但是,我想把它打包到一个应用程序中。 我所尝试的:使用苹果的Jar捆绑工具,我成功地创建了一个应用程序;然而,当我运行它时,它很快在码头上出现和消失。当我从终端运行内部文件时,我得到: 根据“UnsupportedClassVersionError unsupported Major.minor ver

  • 问题内容: 我正在尝试编写一个非常简单的GUI应用程序,用于将一些记录插入数据库中,并读回一些记录(花哨的东西,只有1个表和3行,没有关系)。来源… 错误在这里 结束错误 我收到以下错误… (代码)0 (消息)SQL Server没有返回响应。连接已关闭。 (状态)08S01 我已验证用户,密码,服务器名称,端口和数据库名称都是正确的。如果我将用户名更改为无效的用户名,则会收到报告“无法登录”的错

  • 本文向大家介绍java7改善后的异常处理,包括了java7改善后的异常处理的使用技巧和注意事项,需要的朋友参考一下 异常处理有两处改进——multicatch和final重抛。要知道它们对我们有什么帮助,请先看一段Java 6代码。下面这段代码试图查找、打开、分析配置文件并处理此过程中可能出现的各种异常: 在Java 6中处理不同的异常 这个方法会遇到的下面几种异常: 配置文件不存在; 配置文件在

  • 我们有一个运行在java 7上的服务器端进程:java-version:java version“1.7.0”java(TM)SE运行时环境(build 1.7.0-b147)java HotSpot(TM)64位服务器VM(build 21.0-b17,混合模式) 它接受来自我们自己开发的java应用程序(通过正确签名的JNLP启动)的SSL连接。 通常情况下,不管客户机应用程序是运行在Java