在互联网上发布签名内容的最佳方法是什么?

氙石

我目前正在研究一种体系结构,用户可以在该体系结构的任何服务器上发布内容。为了确保内容实际上是由某个用户发布的(发布后没有更改),使用内容作者的私钥创建签名,该签名的公钥可供集中存储库中的每个人访问。

问题是,我无法控制内容在这些服务器上的实际存储方式。因此,我可以将内容作为JSON对象传输,其中所有数据都经过base64编码,并且签名是使用按一定顺序连接的base64编码内容的哈希创建的:

{
    "a": "b",
    "c": "d",
    "signature": "xyz"
}

signature := sign(PrivKey, hash(b + d);

现在服务器可能会以其他方式(例如数据库)存储其内容。因此,编码可能会更改。也许mysql_real_escape_string()是用PHP完成的,所以东西迷路了。现在,如果要检查签名,可能会出现问题。

因此,通常在创建签名时,您会使用固定的编码和带有某种明确定界符的字节序列(或字符串)-此处并非如此。

因此,出现了一个问题:在这种情况下如何处理签名?

马丁·波德威斯

仍然需要以位或字节为单位的特定消息表示形式,以便对其进行签名。有两种方法可以做到这一点:

  1. 只需存储消息的字节表示,然后再进行更改即可(如果消息是字符串,请先使用定义良好的字符编码对其进行编码);
  2. 定义消息规范表示形式,您可以直接存储消息规范表示形式,也可以在更新签名中的哈希值时将其转换为内存。

消息的规范表示是数据的特殊,唯一表示,以某种方式将其与所有其他可能的消息区分开来;例如,这还可能包括对表的条目进行排序(只要顺序不改变表的含义),删除空格等。

例如,XML加密包含XML编码的规范化方法。显然,不可能为没有内部结构的数据定义规范化。另一个(偶数)更复杂的规范表示为ASN.1消息(例如X509证书本身以及DERRSA签名)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在后台不断检查互联网连接的最佳方法是什么?

来自分类Dev

检查设备是否可以访问互联网的最佳方法是什么?

来自分类Dev

检查用户的互联网连接以在打开时发送通知的最佳方法是什么?

来自分类Dev

什么是检查互联网连接的最佳方法

来自分类Dev

如何在互联网上发布Web服务

来自分类Dev

如何在互联网上发布laravel项目?

来自分类Dev

禁用笔记本电脑上所有互联网功能的最佳方法是什么?

来自分类Dev

互联网上的对等连接

来自分类Dev

互联网上的Akka远程

来自分类Dev

互联网上的rmi iiop

来自分类Dev

在互联网上使用file://

来自分类Dev

互联网上的对等连接

来自分类Dev

互联网上的Akka远程

来自分类Dev

互联网上的RMI聊天

来自分类Dev

如何显示互联网上的图像?

来自分类Dev

互联网上的WOL(WAN)

来自分类Dev

可以在互联网上运行的软件

来自分类Dev

发布了一个 npm,但在互联网上无处可见

来自分类Dev

使用C或C ++检查互联网连接的最快方法是什么?

来自分类Dev

获取互联网上文本文件的内容,扑朔迷离

来自分类Dev

在Android中检测互联网连接的最佳方法

来自分类Dev

通过互联网交换数据的最佳方法

来自分类Dev

通过互联网传输大文件的最佳方法?

来自分类Dev

从互联网更新时间和日期的命令是什么

来自分类Dev

当我实际上没有上传太多内容时,为什么互联网上传量如此之高?

来自分类Dev

当我实际上没有上传太多内容时,为什么互联网上传量如此之高?

来自分类Dev

连接互联网后,有什么方法可以回叫?

来自分类Dev

连接互联网后,有什么方法可以回叫?

来自分类Dev

互联网上的UDP。它是如何工作的?

Related 相关文章

热门标签

归档