gpt4 book ai didi

authentication - SDDL 格式的 SID 的最大长度是多少

转载 作者:行者123 更新时间:2023-12-03 13:24:56 25 4
gpt4 key购买 nike

我正在将 Active Directory 身份验证构建到我的应用程序中,并且我计划将我的应用程序的内部帐户链接到用户的域 SID。对我来说,使用 sid 的字符串格式比使用字节数组更容易,所以我打算将它作为字符串存储在数据库中。我应该填写多长时间以确保 SID 不会被截断?

最佳答案

根据ntseapi_x.h:

typedef struct _SID_IDENTIFIER_AUTHORITY {
UCHAR Value[6];
} SID_IDENTIFIER_AUTHORITY, *PSID_IDENTIFIER_AUTHORITY;

typedef struct _SID {
UCHAR Revision;
UCHAR SubAuthorityCount;
SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
ULONG SubAuthority[ANYSIZE_ARRAY];
} SID, *PISID;

#define SID_MAX_SUB_AUTHORITIES (15)
UCHAR 实际上是一个无符号字符,它是 1 个字节。 ULONG 是一个无符号长整数,为 4 个字节。
SID 的最大数据大小为 68 字节 : UCHAR + UCHAR + (UCHAR * 6) + (ULONG * 15) = 1 + 1 + 6 + 60 = 68
将 SID 转换为字符串,就像调用 ConvertSidToStringSid 得到的一样,可能看起来像这样:L"S-1-5-21-66"
  • "S-1"<= 是所有 SID 的开始
  • 3 个字符

  • "5"<= 是标识符权威
  • 这些数字通常以小数形式打印。一个异常(exception)是,如果权限大于 4 个字节,则将其打印为十六进制,例如。 0x1234...
  • 所以最大值将是“4294967296”或“0xffffffffffff”或14个字符

  • "21"& "66"<= 是子权限
  • 每个最多可以是“4294967296”或 10 个字符,最多 15 个子权限

  • 这些部分由“-”分隔

  • SID 的最大字符串长度为 184 : 3 + 1 + 14 + 1 + (10 * 15) + 14 = 183,或 184 计算空值。
    您可以考虑只使用 MAX_UNICODE_STACK_BUFFER_LENGTH 或 256 ,它非常适合内存。

    关于authentication - SDDL 格式的 SID 的最大长度是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1140528/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com