Как получить доступ к определенному байту из значения реестра, зашифрованного с помощью CryptProtectData

Я пытаюсь получить значение даты из реестра. Значение зашифровано с помощью CryptProtectData.

Интересующие нас байты (с прямым порядком байтов):

[-16] и [-15] - это год. [-14] и [-13] - это месяц, а [-12] и [-11] - это день.

RegistryKey HKCR;
RegistryKey dateKey;
HKCR = RegistryKey.OpenBaseKey(RegistryHive.ClassesRoot, RegistryView.Default);
dateKey = HKCR.OpenSubKey(subKeyPath);
byte[] registryValue = (byte[])dateKey.GetValue(null);
byte[] unprotectedRegistryValue = ProtectedData.Unprotect(registryValue, null, DataProtectionScope.LocalMachine);

UnprotectedRegistryValue - это массив байтов: {byte[224]}. Мне нужно дополнительно обработать диапазон [-16..-11] и передать предложенные значения в BitConverter.ToInt16([-16..-15]), а затем в функции Date, например, для получения информации о году.

К сожалению, я застрял со значением unprotectedRegistryValue, потому что нет отрицательного индекса. Когда я пытаюсь получить доступ к значениям для информации о году.

var yearBytes = new byte[] {unprotectedRegistryValue[-16], unprotectedRegistryValue[-15]};

Я получаю исключение IndexOutOfRangeException, потому что все индексы unprotectedRegistryValue положительны.

Мне не хватает понимания между частью шифрования данных и передачей интересующих байтов для дальнейшей обработки значений.

Как я мог получить интересующие байты и передать их дальше?

1 ответ

Решение

Отрицательный индекс не имеет смысла, если вы не знаете, где находится '0', когда у вас есть положительный индекс, вы предполагаете, что '0' является первым элементом в массиве, но когда у вас есть отрицательное число, консенсуса нет (это не даже действительный), поэтому ваш коллега должен иметь некоторую ссылку на то, где находится "0", где он считает, что данные начинаются и заканчиваются.

Стоит попробовать считать '0' последним байтом, в этом случае '-16' будет unprotectedRegistryValue.Length - 17 и '-15' unprotectedRegistryValue.Length - 16

Другие вопросы по тегам