Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cryptography RSA PKCS#1兼容签名_Cryptography_Rsa_Digital Signature_Pkcs#1 - Fatal编程技术网

Cryptography RSA PKCS#1兼容签名

Cryptography RSA PKCS#1兼容签名,cryptography,rsa,digital-signature,pkcs#1,Cryptography,Rsa,Digital Signature,Pkcs#1,我正在使用PKCS#12.0(OAEP)标准(带附录的签名),但有一些问题我不清楚 正在签名的物理对象是什么?我知道它是散列函数值等等(我知道算法),但是它是从文件的二进制格式计算出来的,不管内容是什么 签字的实际结果是什么?包含签名哈希的文件?是否应将此文件放置在指定位置?这种东西的格式或扩展是什么 如果我有多个要签名的文件,是否应该分别为每个文件执行此操作?还是应该将它们连接起来?再一次-这种操作(文件?)的结果是什么 PKCS#1有时被称为“原始RSA”,是一种低级加密原语:它不处理文件,

我正在使用PKCS#12.0(OAEP)标准(带附录的签名),但有一些问题我不清楚

  • 正在签名的物理对象是什么?我知道它是散列函数值等等(我知道算法),但是它是从文件的二进制格式计算出来的,不管内容是什么

  • 签字的实际结果是什么?包含签名哈希的文件?是否应将此文件放置在指定位置?这种东西的格式或扩展是什么

  • 如果我有多个要签名的文件,是否应该分别为每个文件执行此操作?还是应该将它们连接起来?再一次-这种操作(文件?)的结果是什么

  • PKCS#1有时被称为“原始RSA”,是一种低级加密原语:它不处理文件,也不生成文件,它处理原始数据:输入是一个小于公钥的数字,输出是公钥大小的数字(例如,对于RSA-1024,为1024位)

    如果您想要一个签名文件,您可能需要使用,因为这是附加签名和分离签名最常用的签名格式(甚至PDF文件中的签名实际上通常是PKCS#7信封)

    PS:我对OAEP了解不多,但从我读到的内容来看,它似乎是一个填充方案(在原始签名之前对数据所做的操作),所以我的论点应该仍然有效。

    PKCS#1有时被称为“原始RSA”,是一个低级加密原语:它对文件不起作用,也不会生成文件,它适用于原始数据:输入是比公钥小的数字,输出是公钥大小的数字(例如,对于RSA-1024,1024位)

    如果您想要一个签名文件,您可能需要使用,因为这是附加签名和分离签名最常用的签名格式(甚至PDF文件中的签名实际上通常是PKCS#7信封)


    PS:我对OAEP了解不多,但从我所读到的内容来看,它似乎是一个填充方案(在原始签名之前对数据所做的某些操作),因此我的论点应该仍然有效。

    我补充说,PKCS#7签名是一个比裸PKCS#1签名复杂(且更大)得多的对象,它涉及到使用X.509证书等内容,所以这可能不是你想要的,取决于具体情况。OTOH是一种完整的格式,有很多程序支持,并且可以正确验证,而如果您使用裸PKCS#1,则主要取决于您如何使用它。您的表述“输入是一个比公钥小的数字”非常不清楚。输入要么是一个几乎任意长的字节数组,它首先被散列,然后被签名,要么已经是散列摘要,然后被直接签名。这当然取决于所使用的加密库的接口。不,它不是,PKCS#1包括填充以使输入“足够大”,但不包括散列或附加和分离签名之间的区别,这是在更高级别上管理的,就像在PKCS#7中一样。这很愚蠢。一方面你不知道什么是OAEP,另一方面你固执地坚持PKCS#1签名不使用哈希函数。这为你赢得了当之无愧的否决票。这并不愚蠢,因为在我的第一条到第二条信息之间的时间段内,我阅读了OAEP上的文档并验证了我提供的信息。是的,OAEP确实在内部使用散列,但不会对输入文件进行散列;事实上,它规定最大输入大小严格小于RSA大小相当数量(PKCS#1v2.1官方文档第7.1.1节):M≤ k-2 hLen-2.我补充说,PKCS#7签名是一个比裸PKCS#1签名更复杂(更大)的对象,它涉及到使用X.509证书等内容,因此它可能不是您想要的,这取决于具体情况。OTOH是一种完整的格式,有很多程序支持,并且可以正确验证,而如果您使用裸PKCS#1,则主要取决于您如何使用它。您的表述“输入是一个比公钥小的数字”非常不清楚。输入要么是一个几乎任意长的字节数组,它首先被散列,然后被签名,要么已经是散列摘要,然后被直接签名。这当然取决于所使用的加密库的接口。不,它不是,PKCS#1包括填充以使输入“足够大”,但不包括散列或附加和分离签名之间的区别,这是在更高级别上管理的,就像在PKCS#7中一样。这很愚蠢。一方面你不知道什么是OAEP,另一方面你固执地坚持PKCS#1签名不使用哈希函数。这为你赢得了当之无愧的否决票。这并不愚蠢,因为在我的第一条到第二条信息之间的时间段内,我阅读了OAEP上的文档并验证了我提供的信息。是的,OAEP确实在内部使用散列,但不会对输入文件进行散列;事实上,它规定最大输入大小严格小于RSA大小相当数量(PKCS#1v2.1官方文档第7.1.1节):M≤ 请注意,OAEP填充用于加密,但不用于签名。您应该使用旧的(但仍然流行的)PKCS#1 v1.5填充或PSS填充。请注意,OAEP填充用于加密,但不用于签名。您应该使用旧的(但仍然流行的)PKCS#1 v1.5填充或PSS填充。