لا أستطيع الوصول إلى المفاتيح على اي فون؟
-
08-07-2019 - |
سؤال
يناقش هذا السؤال تشفير البيانات على اي فون استخدام الدالة () سرداب. وكبديل لذلك، هناك المفاتيح على اي فون وإذا كان الأمر كذلك، ما كود أود أن تستخدمه للدخول إليه من أجل تخزين تفاصيل تسجيل الدخول ثم استردادها بالنسبة لنا في تطبيق؟
المحلول
وهناك المفاتيح التي يمكنك استخدامها - لرمز، وأفضل رهان هو للتحقق من تطبيق نموذج GenericKeychain من أبل:
نصائح أخرى
وشيء آخر أن نلاحظ: واجهات برمجة التطبيقات المفاتيح لا تعمل في محاكاة عند استخدام الإصدارات القديمة (الإصدار 2.x، 3.X) من SDK فون. هذا يمكن أن يوفر لك الكثير من الإحباط عند اختبار!
وأنا حقا مثل الطنين أندرسون سلسلة المفاتيح طبقة تجريد وأنا ننتظر بفارغ الصبر <ل أ href = "http://mooseyard.com/projects/MYCrypto/" يختلط = "noreferrer"> MYCrypto ينس Alfke في للوصول إلى حالة قابلة للاستخدام. وهذا الأخير يقوم بعمل المختصة السماح للاستخدام على نظام التشغيل Mac OS X و iPhone باستخدام نفس رمز، على الرغم من معالمه تحاكي فقط مجموعة فرعية صغيرة من ال المفاتيح.
وهنا هو ما يمكنني استخدام لتخزين الرئيسية زوجا / القيمة في سلسلة المفاتيح. تأكد من إضافة Security.framework لمشروعك
#import <Security/Security.h>
// -------------------------------------------------------------------------
-(NSString *)getSecureValueForKey:(NSString *)key {
/*
Return a value from the keychain
*/
// Retrieve a value from the keychain
NSDictionary *result;
NSArray *keys = [[[NSArray alloc] initWithObjects: (NSString *) kSecClass, kSecAttrAccount, kSecReturnAttributes, nil] autorelease];
NSArray *objects = [[[NSArray alloc] initWithObjects: (NSString *) kSecClassGenericPassword, key, kCFBooleanTrue, nil] autorelease];
NSDictionary *query = [[NSDictionary alloc] initWithObjects: objects forKeys: keys];
// Check if the value was found
OSStatus status = SecItemCopyMatching((CFDictionaryRef) query, (CFTypeRef *) &result);
[query release];
if (status != noErr) {
// Value not found
return nil;
} else {
// Value was found so return it
NSString *value = (NSString *) [result objectForKey: (NSString *) kSecAttrGeneric];
return value;
}
}
// -------------------------------------------------------------------------
-(bool)storeSecureValue:(NSString *)value forKey:(NSString *)key {
/*
Store a value in the keychain
*/
// Get the existing value for the key
NSString *existingValue = [self getSecureValueForKey:key];
// Check if a value already exists for this key
OSStatus status;
if (existingValue) {
// Value already exists, so update it
NSArray *keys = [[[NSArray alloc] initWithObjects: (NSString *) kSecClass, kSecAttrAccount, nil] autorelease];
NSArray *objects = [[[NSArray alloc] initWithObjects: (NSString *) kSecClassGenericPassword, key, nil] autorelease];
NSDictionary *query = [[[NSDictionary alloc] initWithObjects: objects forKeys: keys] autorelease];
status = SecItemUpdate((CFDictionaryRef) query, (CFDictionaryRef) [NSDictionary dictionaryWithObject:value forKey: (NSString *) kSecAttrGeneric]);
} else {
// Value does not exist, so add it
NSArray *keys = [[[NSArray alloc] initWithObjects: (NSString *) kSecClass, kSecAttrAccount, kSecAttrGeneric, nil] autorelease];
NSArray *objects = [[[NSArray alloc] initWithObjects: (NSString *) kSecClassGenericPassword, key, value, nil] autorelease];
NSDictionary *query = [[[NSDictionary alloc] initWithObjects: objects forKeys: keys] autorelease];
status = SecItemAdd((CFDictionaryRef) query, NULL);
}
// Check if the value was stored
if (status != noErr) {
// Value was not stored
return false;
} else {
// Value was stored
return true;
}
}
والجدير بالذكر أن هذه القيم الرئيسية / لن تحصل على حذف إذا كان المستخدم بحذف التطبيق الخاص بك. إذا كان المستخدم بحذف التطبيق الخاص بك، ثم يعيد تثبيت ذلك، فإن المفتاح / القيم ستظل الوصول إليها.
وتذكر أيضا أنه عندما توليد معرف التطبيق، إذا كنت تريد أكثر من تطبيق واحد للوصول إلى نفس المعلومات المفاتيح، لديك لتوليد بطاقة البرية معرف التطبيق (##### com.prefix. *) ...
ومع أحدث الإصدار 1.2 من عينة GenericKeychain التفاح يوفر المجمع المفاتيح التي تدير أيضا على محاكي فون. إطلاعك في هذه المقالة للحصول على تفاصيل: <لأ href = "http://dev-metal.blogspot.com/2010/08/howto-use-keychain-in-iphone-sdk-to.html" يختلط = "نوفولو noreferrer "> http://dev-metal.blogspot.com/2010/08/howto-use-keychain-in-iphone-sdk-to.html
وهنا هو واحد أكثر جيدة فئة مجمع من Mr.Granoff https://github.com/granoff/Lockbox بفضل