解密Lotus Notes NSF

3
我希望能够通过编程的方式解密Lotus Notes NSF文件。假设对于每个NSF,我都有访问该NSF所需的ID文件和密码。
我正在使用Lotus Notes 8.5.2,Windows 7 SP1 64位系统。我愿意使用COM、C++ API或C API。
我知道C API函数“NSFDbIsLocallyEncrypted”,可以报告一个NSF是否被加密。然而,我不认为它能够解密NSF。
我知道C++ API函数“LNNotesSession.CreateDatabaseCopy”,它以3个“DBOptions”作为参数,其中有一个成员可以设置为“DBOptions.SetLocalEncryption(LNLOCALENCRYPTION::LNLOCALENCRYPTION_NONE)”。但是,此函数会创建一个新的NSF。如果可能的话,我想就地解密源NSF,以节省时间和磁盘空间。
如何在原地删除NSF的本地加密?

我很好奇,如果你有笔记ID和密码,为什么要解密文件。是为了存档吗?我不经常加密本地数据库,但当我这样做时,总是有一个很好的理由。 - David Navarre
解密后,NSF 将被放入自动化的电子发现系统中,以提取元数据和正文内容。虽然该系统能够接受 ID 文件和密码,但必须手动为每个 NSF 选择一个,这是不可取的。 - Jacob Quisenberry
啊,是的,我忘记了电子发现。现在完全明白了。我预计最大的烦恼将是创建非加密版本所需的时间。 - David Navarre
@JacobQuisenberry:我们需要在这里开发类似的软件,以准备迁移。本地档案必须被解密,但我们不想让用户自己处理这个过程。你成功完成你的应用程序了吗? - D.Bugger
3个回答

5
据我所知,目前没有公开的API可以解密NSF文件。
另外,由于需要重写整个文件才能解密所有数据,因此复制整个NSF文件不会带来太大的时间或空间惩罚。

2
要解密一个使用中等或强加密方式加密的NSF文件,只有特定ID文件才能打开它:首先登录那个ID文件,打开你想要解密的NSF文件,选择应用程序属性,然后取消选择“强加密”。接着,选择“压缩数据库”,关闭属性,关闭与该NSF文件相关的所有内容,然后重新打开NSF文件。当文件重新打开时,它将被压缩。压缩过程会更新所有内容以匹配该选项的新状态。(你也可以使用API实现此操作。)
要解密使用用户公钥或存在于用户ID中的共享/命名加密密钥的文档,必须编写一个代理或API程序,打开数据库中的每个文档并调用NSFNoteDecrypt,接着对每个文档都需要调用NSFNoteUpdate。

-1

Ytria似乎有一个针对此问题的软件解决方案(DatabaseEZ),您可以在其中批量设置数据库加密设置,但我尚未尝试过。该软件的免费精简版似乎不允许这样做。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接