Lotus domino 以编程方式加密Notes数据库

Lotus domino 以编程方式加密Notes数据库,lotus-domino,lotusscript,lotus,Lotus Domino,Lotusscript,Lotus,我需要建立一个工具,可以加密服务器上的数据库 到目前为止,我已经找到了这些信息,但这还不够 可以使用NSFDbIsLocallyEncrypted检查数据库加密是否仅在本地工作。 创建复制副本W32\u NSFDbCreateAndCopy并在创建将应用于复制副本的复制副本时设置加密。 有一个未记录的Notes C API调用为compact设置加密标志,但我无法使其工作 状态far PASCAL NSFDbLocalSecInfoSetDBHANDLE hDB,字选项,字节加密强度,字符far

我需要建立一个工具,可以加密服务器上的数据库

到目前为止,我已经找到了这些信息,但这还不够

可以使用NSFDbIsLocallyEncrypted检查数据库加密是否仅在本地工作。 创建复制副本W32\u NSFDbCreateAndCopy并在创建将应用于复制副本的复制副本时设置加密。 有一个未记录的Notes C API调用为compact设置加密标志,但我无法使其工作

状态far PASCAL NSFDbLocalSecInfoSetDBHANDLE hDB,字选项,字节加密强度,字符far*用户名

我还读到,旧的ODS版本可能会更改“图标注释”,或者在新的ODS版本中使用DBINFO3,但我无法使其正常工作

有人知道如何解决这个问题吗


p、 我被告知HCL将来会提供合适的溶液,但不确定何时提供。

您应该查看BCC溶液DominoProtect或Ulrich Krause有其他溶液,在服务器上进行数据库加密是许多合规情况的要求。

您应该研究BCC解决方案DominoProtect或Ulrich Krause有其他解决方案,在服务器上进行数据库加密是许多合规情况的要求。

以下是工作代码。我不知道使用此代码将什么设置为EncrytionStrength以删除本地加密

%REM
Agent encrypt
Created Dec 22, 2019 by Ulrich Krause/singultus
Description: Comments for Agent
%END REM
Option Public
Option Declare

Public Const W32_LIB = {nnotes.dll}
Declare Function W32_NSFDbCompactExtended Lib W32_LIB Alias {NSFDbCompactExtended}  (ByVal Pathname As String, Options As Long, retStats As Long) As Integer
Declare Function W32_NSFDbLocalSecInfoSet Lib W32_LIB Alias {NSFDbLocalSecInfoSet} (ByVal hDb As Long, ByVal wOptions As Integer, ByVal EncryptStrength As Integer, ByVal Username As String) As Integer
Declare Function W32_NSFDbIsLocallyEncrypted Lib W32_LIB Alias {NSFDbIsLocallyEncrypted} ( ByVal hDB As Long, V As Integer) As Integer
Declare Sub W32_OSLoadString Lib W32_LIB Alias {OSLoadString} (ByVal null1 As Long, ByVal sError As Integer, ByVal errstr As String, ByVal lenstr As Integer)
Declare Function W32_NSFDbOpen Lib W32_LIB Alias {NSFDbOpen}(ByVal dbName As String, hDb As Long) As Integer
Declare Function W32_NSFDbClose Lib W32_LIB Alias {NSFDbClose} (ByVal hDb As Long) As Integer
Sub Initialize
Dim hDb As Long
Dim rc As Integer
Dim sDb As String
Dim retStats As Long

sDb = "serv01/singultus!!crash.nsf"

rc = W32_NSFDbOpen(sDb, hDb)

If rc = 0 Then
    rc = W32_NSFDbLocalSecInfoSet(hDb, 0,1, "")
    msgbox GetError(rc)

    If rc = 0 Then
        rc = W32_NSFDbCompactExtended (sDb, 0, retStats)
    End if
    rc = W32_NSFDbClose(hDb)
End If
End Sub
Function GetError (errnum As Integer) As String
Dim s As String*256
If IsDefined("WINDOWS") Then
    W32_OSLoadString 0, errnum And &h03FFFFFFF, s, 256
Else
    'TUX_OSLoadString 0, errnum And &h03FFFFFFF, s, 256
End If
getError = StrLeft(s, Chr(0))
End Function

这是工作代码。我不知道使用此代码将什么设置为EncrytionStrength以删除本地加密

%REM
Agent encrypt
Created Dec 22, 2019 by Ulrich Krause/singultus
Description: Comments for Agent
%END REM
Option Public
Option Declare

Public Const W32_LIB = {nnotes.dll}
Declare Function W32_NSFDbCompactExtended Lib W32_LIB Alias {NSFDbCompactExtended}  (ByVal Pathname As String, Options As Long, retStats As Long) As Integer
Declare Function W32_NSFDbLocalSecInfoSet Lib W32_LIB Alias {NSFDbLocalSecInfoSet} (ByVal hDb As Long, ByVal wOptions As Integer, ByVal EncryptStrength As Integer, ByVal Username As String) As Integer
Declare Function W32_NSFDbIsLocallyEncrypted Lib W32_LIB Alias {NSFDbIsLocallyEncrypted} ( ByVal hDB As Long, V As Integer) As Integer
Declare Sub W32_OSLoadString Lib W32_LIB Alias {OSLoadString} (ByVal null1 As Long, ByVal sError As Integer, ByVal errstr As String, ByVal lenstr As Integer)
Declare Function W32_NSFDbOpen Lib W32_LIB Alias {NSFDbOpen}(ByVal dbName As String, hDb As Long) As Integer
Declare Function W32_NSFDbClose Lib W32_LIB Alias {NSFDbClose} (ByVal hDb As Long) As Integer
Sub Initialize
Dim hDb As Long
Dim rc As Integer
Dim sDb As String
Dim retStats As Long

sDb = "serv01/singultus!!crash.nsf"

rc = W32_NSFDbOpen(sDb, hDb)

If rc = 0 Then
    rc = W32_NSFDbLocalSecInfoSet(hDb, 0,1, "")
    msgbox GetError(rc)

    If rc = 0 Then
        rc = W32_NSFDbCompactExtended (sDb, 0, retStats)
    End if
    rc = W32_NSFDbClose(hDb)
End If
End Sub
Function GetError (errnum As Integer) As String
Dim s As String*256
If IsDefined("WINDOWS") Then
    W32_OSLoadString 0, errnum And &h03FFFFFFF, s, 256
Else
    'TUX_OSLoadString 0, errnum And &h03FFFFFFF, s, 256
End If
getError = StrLeft(s, Chr(0))
End Function

为什么要在服务器上加密?谁的身份证?如果数据库使用您的ID加密,服务器将无法再对其解密。服务器应该位于安全位置,因此不需要加密。您始终可以加密网络流量。@D.Bugger您是对的,但这是客户的请求。您可以而且应该使用服务器的ID进行加密。缺点是,为了使其有用,您需要在ID文件中输入密码,这意味着要从重启中恢复,有人需要从控制台输入密码,问我怎么知道的。您可以通过使用空白密码稍微降低安全性,但某些策略不允许这样做。服务器应该是安全的。。。著名的遗言。服务器应该是安全的。。。。。。不是我的话-我能理解在云中某处安装Domino服务器的必要性。这里有一个类似的问题:为什么要在服务器上加密?谁的身份证?如果数据库使用您的ID加密,服务器将无法再对其解密。服务器应该位于安全位置,因此不需要加密。您始终可以加密网络流量。@D.Bugger您是对的,但这是客户的请求。您可以而且应该使用服务器的ID进行加密。缺点是,为了使其有用,您需要在ID文件中输入密码,这意味着要从重启中恢复,有人需要从控制台输入密码,问我怎么知道的。您可以通过使用空白密码稍微降低安全性,但某些策略不允许这样做。服务器应该是安全的。。。著名的遗言。服务器应该是安全的。。。。。。不是我的话-我能理解在云中某处安装Domino服务器的必要性。这里有一个类似的问题: