出于隐私原因,我想阻止我的用户将未加密的文件发布到我的ftp网站。
使用PGP加密敏感数据的所有数据交换是公司政策。
我想设置一个程序来监控ftp文件夹,每当有新文件放在那里时,请确认它实际上是加密的。
我不能仅仅依赖文件扩展名,因为在某些情况下,我们的贸易伙伴需要一个特定的文件名,最后没有.PGP。
我是否可以使用库或其他方法来验证给定文件是否已加密?
我在Windows平台上使用C#和.NET。
答案 0 :(得分:1)
您可以轻松检测文本模式PGP文件。他们从
开始-----BEGIN PGP MESSAGE-----
Version: GnuPG v2.0.11 (GNU/Linux)
以
结束-----END PGP MESSAGE-----
这当然不是一个确定的方法,但足以防止意外的未加密上传。
我已经知道二进制格式是怎样的。您可以尝试使用带有空密码的“gpg -d”,如果失败并显示“decrypt_message failed”,那么它就不是正确的文件。如果它以坏键失败,则它是PGP文件。这不是一个好主意,因为消息将来可能会发生变化。
答案 1 :(得分:0)
您必须使用启发式方法来了解文件是否已加密。通常,加密文件往往具有接近随机的字节分布。因此,如果您读取字节流,并对每个字节进行桶计数,则分布应该是均匀的,即,对于每个加密,应该有与AAh或FFh或78h等几乎一样多的00h(两个十六进制值表示一个字节)文件。
坏消息几乎所有压缩文件(jpg,mp3,zip,...)也都有这种随机字节模式。此外,作为启发式测试,一些加密文件将失败,一些未加密的文件将被批准。