【问题标题】:Embed signature in file with java使用java在文件中嵌入签名
【发布时间】:2014-11-11 21:37:08
【问题描述】:

我正在尝试找到一种将 RSA 签名嵌入文件而不使其不可读的方法。现在,我可以使用我的私钥生成一个有效的签名作为byte[] 值。

所以现在我只想将它包含在文件中,这样我就可以提取它并验证文件是否已被操纵。

我要嵌入签名的文件是图像、CSS 和 JavaScript 文件。

【问题讨论】:

  • 感谢您的回答。例如,我的目标文件是图像和 javascript 文件
  • 您要嵌入签名的文件格式是什么? UTF-8 文本?
  • 不,主要是图像、css 和 .js 文件
  • @ArtjomB。嘿,谢谢,我不知道 IPTC 标头 :) 作为答案发布,这可能是我们能得到的最接近...
  • 请注意,RSA签名等的正确标签是digital-signature,而不是方法签名所采用的signature;毕竟这是一个编程网站(也是@ArtjomB)

标签: java cryptography rsa digital-signature


【解决方案1】:

这取决于文件格式。对于.css.js,您可以考虑将签名放入 cmets,尽管一个位更改已经足以破坏签名。所以你必须完美地提取签名并确保.css.js 文件不会以任何方式被转换。您还可以将.css.js 转换成一些规范的形式 并签名。

对于图像,这个技巧更难。您需要某种可用的元数据来存储签名。对于.jpeg.png 可能是IPTC attribute 的图像。但是,这些标头对于每种图像类型都不存在或不可能...

通常使用分离的签名来代替。例如,分离的签名在 CMS (cryptographic message syntax) standard 中定义,而后者又由 Bouncy Castle libraries 实现。

【讨论】:

  • 请注意,依赖 JavaScript 中的验证可能没有实际意义。如果您可以更改文件,那么您很可能也可以更改验证方法。
  • 您的意思是 分离的签名 只是将签名文件存储在实际文件旁边?这些文件可能会在某个时间点发送。在响应标头中将签名与文件一起发送可能是有意义的。虽然,这不会是浏览器设置中的解决方案,因为浏览器中的 JS 通常无法访问标题。
  • - 你无法从 HTML 中读取标题 :) Cookie 可以。
  • 谢谢大家!!我去看看:)
猜你喜欢
  • 1970-01-01
  • 2012-06-17
  • 1970-01-01
  • 2012-03-23
  • 2012-02-28
  • 2021-10-02
  • 1970-01-01
  • 2018-11-05
  • 2015-02-13
相关资源
最近更新 更多