代码之家  ›  专栏  ›  技术社区  ›  Aheho

监视非pgp文件

  •  1
  • Aheho  · 技术社区  · 15 年前

    出于隐私原因,我想阻止我的用户将未加密的文件发布到我的ftp站点。

    公司的政策是敏感数据的所有数据交换都使用PGP加密。

    我想设置一个程序来监视ftp文件夹,每当有新文件放在那里时,请确认它实际上是加密的。

    我不能仅仅依赖文件扩展名,因为在某些情况下,我们的贸易伙伴需要一个特定的文件名,它的结尾没有.PGP。

    是否有库或其他方法可用于验证给定文件是否加密?

    我在windows平台上使用C#和.NET。

    2 回复  |  直到 15 年前
        1
  •  1
  •   stribika    15 年前

    您可以轻松检测文本模式的PGP文件。他们从

    -----BEGIN PGP MESSAGE-----
    Version: GnuPG v2.0.11 (GNU/Linux)
    

    -----END PGP MESSAGE-----
    

    这当然不是一个确定的方法,但足以防止意外的未加密上传。

    我知道二进制格式是什么样子的。您可以尝试使用“gpg-d”与空密码,如果它失败与“解密消息失败”,那么它不是一个正确的文件。如果失败的密钥错误,则它是一个PGP文件。这不是一个好主意,因为这些信息在未来可能会改变。

        2
  •  0
  •   kurast    15 年前

    您必须使用启发式方法来知道文件是否加密。通常,加密文件的字节数几乎是随机分布的。因此,如果您读取字节流,并对每个字节进行bucket计数,则分布应该是均匀的,即对于每个加密文件,应该有接近00h的AAh或FFh或78h或etc(两个十六进制值表示一个字节)。

    坏消息是几乎所有的压缩文件(jpg,mp3,zip,…)都有这种随机字节的模式。另外,作为一个启发式测试,一些加密的文件将失败,一些未加密的文件将被批准。