Реализация системы безопасности работает путем предоставления или отсутствия группы друзей друзей для чтения журнала / текста.
Предполагается, что существует максимум 30 возможных групп, поскольку бит-0 равенопределенный, и бит-31 зарезервирован.
Код безопасности кодируется на unsigned int
, что означает 32 бита, из которых биты от 0 до 31 имеют специальное значение.
- LSb, бит0, если установлено значение
1
, разрешает любому другу доступ для чтения. - , если бит0 равен
0
, это означает, что следующие 30 битов, биты от 1 до 30, проверяются, чтобы определить, является ли группа i
(от бита i
) имеет доступ на чтение (бит установлен на 1
) или нет (бит установлен на 0
).
unsigned int
можно представить как
bit 31 bit 0
v v
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
например, десятичное значение 11 (0 ... 01011 или 8 + 3) представляется как
00000000000000000000000000001011
, где биты 0, 1 и 3 установлены в 1,другие установлены на 0.
Итак, чтобы проверить, имеет ли друг доступ к журналу, возьмите бит доступа к журналу, например,
11000000000000000000000000001011
, который вы видитечто фиПервый бит равен 1, поэтому все группы (все друзья) авторизованы.
Если доступ будет
11000000000000000000000000001010
, то первый бит равен 0, поэтому необходимо проверить номер группы подоступ выше.Скажем, номер группы равен 1, вы сверяете с доступом выше
11000000000000000000000000001010
1
^
group one
и видите, что группа 1 авторизована.Если у вас будет
11000000000000000000000000001000
, группа 1 будет не авторизована.
Для групп 3 и 30 доступ также разрешен:
11000000000000000000000000001000
* *
(MSb. Bit31 установлен на 1
, но его значение зарезервировано, поэтому не стоит беспокоиться о его значении)