Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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
Security 分层文件夹的SHA-1哈希_Security_Authentication_Cryptography_Certificate_X509certificate - Fatal编程技术网

Security 分层文件夹的SHA-1哈希

Security 分层文件夹的SHA-1哈希,security,authentication,cryptography,certificate,x509certificate,Security,Authentication,Cryptography,Certificate,X509certificate,我有一个分层文件夹结构,根文件夹包含几个包含文件内容的子文件夹和几个根文件夹文件。我想为分层文件夹内容生成签名 计划是生成分层文件夹内容的SHA-1散列。一个我还不知道的工具必须递归地从每个子文件夹中拾取东西,并且在生成内容的累积散列之前还要考虑根文件。想法是使用私钥加密这个累积散列,并将这个签名放在根文件夹中 这可能吗?OpenSSL或任何其他工具可以做到这一点吗?这似乎是可能的。 我要一份哈希表为什么是SHA-1而不是SHA-256?在维基百科SHA-1中搜索文件夹中的每个文件。根据文件名按

我有一个分层文件夹结构,根文件夹包含几个包含文件内容的子文件夹和几个根文件夹文件。我想为分层文件夹内容生成签名

计划是生成分层文件夹内容的SHA-1散列。一个我还不知道的工具必须递归地从每个子文件夹中拾取东西,并且在生成内容的累积散列之前还要考虑根文件。想法是使用私钥加密这个累积散列,并将这个签名放在根文件夹中

这可能吗?OpenSSL或任何其他工具可以做到这一点吗?

这似乎是可能的。 我要一份哈希表为什么是SHA-1而不是SHA-256?在维基百科SHA-1中搜索文件夹中的每个文件。根据文件名按字典顺序连接哈希,并通过连接的文件哈希上的哈希计算文件夹的哈希。 你可以递归地做

另一个选项是将所有文件夹都作为一个大文件引用,尽管看起来更复杂:您可以像DFS一样以确定性的方式扫描文件夹,然后将数据作为一个非常大的结构化文件登录

我相信您可以找到用于计算文件上哈希函数的库和代码。 例如,对于签名,您只需要一对私钥和公钥RSA或El Gamal。 通过使用私钥加密代码进行签名


因此,如果OpenSSL为您提供这样的密钥对,您可能可以使用它。

您需要问的问题是:您想用签名保护什么?每个文件的内容是什么?文件的路径?添加或删除某些文件?Debian为签署软件包存储库而采用的解决方案如下:

在目录的顶层创建一个文本文件,其中包含目录中的文件列表。对于每个文件,添加文件内容的摘要值

例如:

/root/dir1/file1.bin         sha1:928a2c3350e2894a5614e88c9e3bfa03c3c19b43
/root/dir1/file2.bin         sha1:13945d6f641725b091d5fd936da61084da3d8f89
/root/dir2/file1.bin         sha1:614dbf0fe42e76bc52b539a27cdb6838162130b5
/root/dir2/subdir/file3.bin  sha1:a0e96d0478c19273783e643a24ef1ea7cb432a48
使用openssl对此文件进行签名:

openssl dgst-sha1-sign privateKey.pem file.txt>file.txt.sig


不要使用私钥加密。使用专用的签名操作。这当然是正确的解决方案。我会在不同于散列的位置创建文本文件/签名,我会尝试选择SHA-256或SHA-512,可能还有RSA-PSS,但总体思路是好的,有许多协议使用相同的机制。哦,还有查找-已找到类型f-print0 | xargs-0 sha1sum。请注意,编程某种排序以查找不匹配项和比较函数可能更复杂。