我想以编程方式解密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中删除本地加密?
答案 0 :(得分:3)
AFAIK,没有用于解密NSF文件的公开API。
此外,由于需要重写整个文件以解密所有数据,我认为复制整个NSF确实没有任何时间或空间损失。
答案 1 :(得分:0)
要解密使用中等或强加密加密的NSF文件,以便只有特定的ID文件可以打开它,请登录该ID文件,选择应用程序属性,然后取消选择“强加密”。然后,选择“压缩数据库”,关闭属性,关闭与该文件关联的所有内容,然后重新打开该文件。压缩过程会更新所有内容以匹配该选项的新状态。 (您也可以使用API执行此操作。)
要解密加密到用户公钥或用户ID中存在的共享/命名加密密钥的文档,您必须编写一个代理或API程序,打开数据库中的每个文档并调用NSFNoteDecrypt,然后调用NSFNoteUpdate每个人。
答案 2 :(得分:-1)
Ytria确实具有针对此(DatabaseEZ)的软件解决方案,您可以在其中设置数据库加密设置,尽管我没有尝试过。该软件的免费精简版似乎不允许这样做。