Swift 4. Если ваш массив содержит элементы типа [String: AnyObject]. Итак, чтобы найти индекс элемента, используйте приведенный ниже код
var array = [[String: AnyObject]]()// Save your data in array
let objectAtZero = array[0] // get first object
let index = (self.array as NSArray).index(of: objectAtZero)
Или Если вы хотите найти индекс на основе ключа из словаря. Здесь массив содержит объекты класса Model, и я сопоставляю свойство id.
let userId = 20
if let index = array.index(where: { (dict) -> Bool in
return dict.id == userId // Will found index of matched id
}) {
print("Index found")
}
Освященный метод должен использовать CryptoAPI и API Защиты данных.
Для шифрования используйте что-то вроде этого (C++):
DATA_BLOB blobIn, blobOut;
blobIn.pbData=(BYTE*)data;
blobIn.cbData=wcslen(data)*sizeof(WCHAR);
CryptProtectData(&blobIn, description, NULL, NULL, NULL, CRYPTPROTECT_LOCAL_MACHINE | CRYPTPROTECT_UI_FORBIDDEN, &blobOut);
_encrypted=blobOut.pbData;
_length=blobOut.cbData;
Дешифрование является противоположным:
DATA_BLOB blobIn, blobOut;
blobIn.pbData=const_cast<BYTE*>(data);
blobIn.cbData=length;
CryptUnprotectData(&blobIn, NULL, NULL, NULL, NULL, CRYPTPROTECT_UI_FORBIDDEN, &blobOut);
std::wstring _decrypted;
_decrypted.assign((LPCWSTR)blobOut.pbData,(LPCWSTR)blobOut.pbData+blobOut.cbData/sizeof(WCHAR));
, Если Вы не указываете CRYPTPROTECT_LOCAL_MACHINE затем, зашифрованный пароль может быть надежно сохранен в реестре или файле конфигурации, и только можно дешифровать его. Если Вы указываете LOCAL_MACHINE, то любой с доступом к машине может получить его.
Как упомянуто, Защита данных API является хорошим способом сделать это. Обратите внимание, что при использовании.NET 2.0 или больше Вы не должны использовать P/Invoke для вызова DPAPI. Платформа переносит вызовы с Системой. Безопасность. Криптография. Класс ProtectedData.
Я нашел эту книгу keith Brown Руководством разработчика.NET к безопасности Windows. Это имеет некоторые хорошие образцы, покрывающие все виды сценариев безопасности. Свободный Интерактивная версия также доступна.
Если Вы храните его как безопасную строку и сохраняете безопасную строку в файл (возможно использующий Изолированное устройство хранения данных , единственное время, у Вас будет незашифрованный пароль, - при дешифровании его для создания mbstore. К сожалению, конструктор не берет SecureString или Учетный объект.