我想以编程方式解密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
作为参数3,该成员具有可以设置为DBOptions.SetLocalEncryption( LNLOCALENCRYPTION::LNLOCALENCRYPTION_NONE )
的成员。但是,此功能会创建一个新的NSF。如果可能的话,我想就地解密源NSF,以节省时间和磁盘空间。
如何从现有的NSF中删除本地加密?
AFAIK,没有用于解密NSF文件的公开API。
此外,由于需要重写整个文件才能解密所有数据,所以我认为复制整个NSF确实不会浪费任何时间或空间。
要解密以中等或强加密方式加密的NSF文件,以便只有特定的ID文件才能打开它,登录到该ID文件,选择应用程序属性,然后取消选择“强加密”。然后,选择“压缩数据库”,关闭属性,关闭与该文件关联的所有内容,然后重新打开该文件。压缩过程将更新所有内容以匹配该选项的新状态。 (您也可以使用API进行此操作。)
要解密用用户的公共密钥或用户ID中存在的共享/命名的加密密钥加密的文档,您必须编写一个代理或API程序,该程序将打开数据库中的每个文档并调用NSFNoteDecrypt,然后调用NSFNoteUpdate每个。
Ytria确实具有针对此(DatabaseEZ)的软件解决方案,您可以在其中设置数据库加密设置,尽管我没有尝试过。该软件的免费精简版似乎不允许使用。