分层文件夹的SHA-1哈希

时间:2013-12-06 06:11:32

标签: security authentication cryptography certificate x509certificate

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

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

这可能吗? OpenSSL或任何其他工具可以这样做吗?

2 个答案:

答案 0 :(得分:2)

您需要问的问题是:您希望通过签名保护什么?每个文件的内容?文件的路径?添加或删除一些文件? Debian用于签署软件包存储库的解决方案如下:

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

    例如:

    /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
    
  2. 使用openssl:

    对此文件进行签名

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

答案 1 :(得分:1)

似乎有可能。 我会在文件夹中的每个文件上使用哈希(为什么SHA-1而不是SHA-256?在Wikipedia SHA-1中搜索)。通过文件名称(按字典顺序)连接哈希值,并通过连接文件哈希值上的哈希值计算文件夹的哈希值。 你可以递归地做。

另一个选项(虽然看起来更复杂)是将所有文件夹称为一个大文件:您可以以确定的方式扫描文件夹(如DFS),只需将数据签名为一个(非常大的)结构化文件

我确信您可以找到用于计算文件哈希函数的库和代码。 对于签名,您只需要一对私钥和公钥(例如RSA或El-Gamal)。 您可以使用私钥“加密”代码来签名。

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