需要有关SID_AND_ATTRIBUTES_HASH结构的哈希成员的说明

时间:2018-06-22 13:44:08

标签: c winapi

概述

根据MSDN,SID_AND_ATTRIBUTES_HASH struct的定义如下:

typedef struct _SID_AND_ATTRIBUTES_HASH {
  DWORD               SidCount;
  PSID_AND_ATTRIBUTES SidAttr;
  SID_HASH_ENTRY      Hash[SID_HASH_SIZE];
} SID_AND_ATTRIBUTES_HASH, *PSID_AND_ATTRIBUTES_HASH;

当我尝试调用GetTokenInformation()并将其 TokenHandle 参数设置为当前进程的令牌句柄,并将其 TokenInformationClass 参数设置为{{1}时}, SidHash 成员指向的SID_AND_ATTRIBUTES_HASH struct包含以下信息(在我的系统中):

  • SidCount 成员等于16。
  • SidAttr 成员指向16个SID_AND_ATTRIBUTES结构的数组。
  • 哈希成员包含32个哈希值的数组。

据说 Hash 成员是一个指向哈希值的指针的数组。这些值对应于 SidAttr 参数所指向的SID_AND_ATTRIBUTES结构。

抱歉,我不能完全理解其中的解释。

问题

哈希值是什么?

我想,如果每个哈希值对应于SID_AND_ATTRIBUTES结构数组中的每个SID(在我的系统中是16个SID),为什么会有32个哈希值?

谢谢。

更新

这是我得到的16个SID:

  • S-1-5-21-1413122000-1259115538-2916509531-1001
  • S-1-5-21-1413122000-1259115538-2916509531-513
  • S-1-1-0
  • S-1-5-114
  • S-1-5-32-544
  • S-1-5-32-559
  • S-1-5-32-545
  • S-1-5-4
  • S-1-2-1
  • S-1-5-11
  • S-1-5-15
  • S-1-5-113
  • S-1-5-5-0-102823280
  • S-1-2-0
  • S-1-5-64-10
  • S-1-16-12288

这些是我得到的32个哈希值:

  • 45076
  • 2370
  • 8
  • 0
  • 128
  • 0
  • 0
  • 0
  • 0
  • 1
  • 16384
  • 512
  • 0
  • 0
  • 0
  • 1056
  • 59270
  • 0
  • 112
  • 0
  • 0
  • 0
  • 0
  • 6152
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
  • 1
  • 0

0 个答案:

没有答案