- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的代码,用于解密一些 Base64 编码的字符串(或者它的字节数组,是的):
IvParameterSpec ivParameterSpec = new IvParameterSpec("randombigrandom".getBytes("UTF-8"));
bytes = key.getBytes("UTF-8");
keySpec = new SecretKeySpec(bytes, "AES");
cipher = Cipher.getInstance("AES/CCM/NOPADDING", new BouncyCastleProvider());
cipher.init(Cipher.DECRYPT_MODE, keySpec, ivParameterSpec);
ret = ByteBuffer.wrap(cipher.doFinal(Base64Utils.decode(requestBody.getEncryptedData().getBytes())));
我使用 AES/CCM,因为我们使用默认使用 AES/CCM 的 BLE(低功耗蓝牙)设备。我有一个异常(exception):
org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher$1: nonce must have length from 7 to 13 octets
at org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher.engineInit(Unknown Source)
有什么想法如何设置该随机数吗?
最佳答案
根据IETF RFC 3610 -- Counter with CBC-MAC (CCM) ,随机数 N 的长度必须为 15 - L 八位字节,其中 L 的范围为 2 - 8 八位字节。 L 的建议值为 8,因为消息长度 l(m) 受 0 <= l(m) 限制< 2^(8L),因此当 L = 8 时,最大消息长度为 2^64 - 1。
您为 IvParameterSpec
提供的值是 randombigrandom
,即 15 字节。根据为您的消息选择的长度,该值必须介于 7 (15 - 8) 和 13 (15 - 2 )八位字节。
当您从外部源接收加密数据时,随机数应伴随每条加密消息(随机数不必加密或保密,只需每条消息唯一且不可预测)。您应该在收到消息时使用提供的随机数填充 IvParameterSpec
(阅读您的设备的规范以了解它如何序列化消息 - 它可能是您的请求正文中的单独字段,或者您可能需要按字节边界分割加密数据字段)。
应该明确指出,您必须为使用相同 key 加密的每条消息使用唯一的随机数值。否则会破坏此模式的安全属性 (作者的话)。使用没有计数器的静态随机数可以保证您发送的任何消息都将被轻易破坏。
关于java - 得到了 org.bouncycaSTLe.jcajce.provider.symmetry.util.BaseBlockCipher$1 : nonce must have length from 7 to 13 octets while decrypt bytes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41461525/
我正在使用 python Azure sdk。当文件上传时,其内容类型更改为 application/octet-stream。 我想设置其默认内容类型,例如 PNG 图像的 image/png。 我
我在计算字符串长度时遇到问题。我有以下字符串: 30 ctime=1460687405.982514823\n 其格式如下: 扩展 header 应包含一个或多个记录,每个记录的构造如下: “%d %
我有一个简单的视频文件上传表单。它可以在普通 PC 上运行,但是当从移动设备 (Android) 上传时,它会将文件 mime 类型发送为 application/octet-stream,文件 nu
目前,当我使用 shared access signature (SAS) Token 构建 URL 时,我遇到了 Azure 文件存储问题。 。文件将在浏览器中下载,但内容类型始终是应用程序/八位字
我有一个与 corba 相关的问题。 在我的 Java 应用程序中我使用typedef 序列数据; 现在我开始研究这个数据 vector 。如果我对 Corba 规范的理解是正确的序列将转换为 xs:
我希望能够将 ipv6 地址解析为八位字节。有没有类似下面的? IPAddress.Parse(address).GetAddressBytes()[0]; IPAddress.Parse(addre
我们使用以 CHAR(18) 字符集八位字节形式存储在表中的二进制值。 在 Firebird 2.0.4 中,我们使用 ASCII 作为默认数据库字符集和连接字符集。我们有一个可以生成所需数据的 UD
我正在调用imageServer并得到一个 x-genericbytedata-octet-stream 作为响应。所以我想知道我是否可以将其转换为可操作的某种格式,例如ndarray。 这就是我得到
我有一个第三端服务,它向我的 Django 应用程序发出带有文件的 POST 请求。要成功上传到 Django 应用程序,请求必须具有“multipart/form-data”内容类型,但内容类型在我
在将 Spring-MVC 应用程序部署到 Tomcat 服务器时,我遇到了一个问题:服务器一直使用 application/x-octet-stream 作为响应类型。因此,浏览器不会显示页面,而是
我有一个非常基本的问题: 我正在编写代码以使用 JSP 和 Servlet 下载 CSV 文件。我从互联网论坛上获得了代码并且工作正常,但我试图理解以下两行的重要性 response.setConte
如何在 C 语言中将 char 字符串编码为 Octet 字符串?例如,如果有: char *string = "245732473"; 我需要将此字符串编码为八位字节字符串吗?我怎样才能做到这一点?
我正在尝试从 http://api.openweathermap.org/data/2.5/forecast/daily?lat=35&lon=139&cnt=10&mode=json 接收 json
八位字节串和字符有什么区别?如何使用八位字节串?任何人都可以在 Octet 字符串上编写一个小的 C 程序吗?八位字节字符串如何存储在内存中? 最佳答案 标准(等等)使用“八位组”来明确声明他们谈论的
这就是我正在处理的事情。我们的一个程序有一个支持表格,用户可以使用它来请求支持。这个表单的作用是,它向 PHP 脚本执行 HTTP POST 请求,该脚本应该收集信息并将其转发到支持电子邮件地址。 P
我正在尝试通过以下方式使用数据 uri 下载文件: 问题是下载的文件总是命名为“Unknown”,无论我尝试使用什么文件名。这是给文件命名的正确方法吗?或者其他需要完成了吗? 最佳答案 这是解决方案
我正在使用 Postman 发送以下请求: 我的 Controller 看起来像这样: @RestController @RequestMapping(path = RestPath.CHALLENG
我不断收到这个警告 资源被解释为字体,但以MIME类型application / octet-stream传输:“ http://127.0.0.1:8080/assets/font/fontawes
我正在将消息从 Azure IoT 中心路由到 Blob 容器 ( Azure Storage as a routing endpoint )。发送到 IoT 中心的消息的内容类型为“applicat
我有一个 REST Controller : @RequestMapping(value = "greeting", method = RequestMethod.GET, produces = "a
我是一名优秀的程序员,十分优秀!