This question discusses encrypting data on the iPhone। एक विकल्प के रूप में, क्या आईफोन पर एक कीचेन है और यदि हां, तो लॉगिन विवरण स्टोर करने के लिए मैं इसका उपयोग करने के लिए किस कोड का उपयोग करूंगा और फिर उन्हें एप्लिकेशन में हमारे लिए पुनर्प्राप्त कर सकता हूं?क्या मैं आईफोन पर कीचेन एक्सेस कर सकता हूं? क्रिप्ट() फ़ंक्शन का उपयोग करके
उत्तर
कीचेन आप उपयोग कर सकते हैं कोड के लिए, सबसे अच्छा शर्त एप्पल से GenericKeychain नमूना आवेदन की जाँच करने के लिए है एक ही कीचेन जानकारी तक पहुंचने के लिए एक आवेदन से, आपको एक वाइल्ड कार्ड एपआईडी (#####। com.prefix। *) उत्पन्न करना होगा ...
भी याद रखें कि एक AppID, पैदा आप और अधिक चाहते हैं: -
ध्यान देने योग्य एक और बात: कीचेन एपीआई नहीं आईफोन एसडीके के पुराने संस्करण (2.x, 3.x) का उपयोग करते समय सिम्युलेटर में काम करें। परीक्षण करते समय यह आपको बहुत निराशा बचा सकता है!
यह थोड़ी देर के लिए तय किया गया है। यह सिम्युलेटर में मेरे लिए काम करता है। – bartvdpoel
हां, अब यह सिम में काम करता है। मुझे विश्वास है कि यह 3.x रिलीज में तय किया गया था। –
मुझे वास्तव में Buzz Anderson's Keychain abstraction layer पसंद है और मैं उत्सुकतापूर्वक Jens Alfke's MYCrypto का उपयोग करने योग्य राज्य तक पहुंचने का इंतजार कर रहा हूं। उत्तरार्द्ध एक ही कोड का उपयोग कर मैक ओएस एक्स और आईफोन पर उपयोग की इजाजत देने का एक सक्षम काम करता है, हालांकि इसकी विशेषताएं केवल कीचेन के एक छोटे से सबसेट की नकल करती हैं।
जेनेरिककेचैन नमूना के नवीनतम संस्करण 1.2 के साथ ऐप्पल एक कीचेन रैपर प्रदान करता है जो आईफोन सिम्युलेटर पर भी चलता है। विवरण के लिए इस आलेख पर देखें: http://dev-metal.blogspot.com/2010/08/howto-use-keychain-in-iphone-sdk-to.html
मैं कुंजीपटल में कुंजी/वैल्यू जोड़े को स्टोर करने के लिए उपयोग करता हूं। अपनी परियोजना
#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;
}
}
यह ध्यान देने योग्य है कि इन कुंजी/मान उपयोगकर्ता ने आपके ऐप को हटा देता है यदि नहीं हटेंगे लायक है के लिए Security.framework जोड़ने के लिए सुनिश्चित करें। यदि कोई उपयोगकर्ता आपके ऐप को हटा देता है, तो उसे फिर से इंस्टॉल करता है, तो कुंजी/मान अभी भी पहुंच योग्य होंगे।
यह कोड मेरे लिए आईओएस 4.3 – AlBeebe
चलाने वाले सिम्युलेटर पर मेरे लिए ठीक काम करता है चयनकर्ता getSecureValueForKey में एक बग है: जब आप मान वापस करते हैं, तो यह पहले ही रिलीज़ हो चुका है। इसे "[परिणाम रिलीज] द्वारा जारी किया गया है;" –
मैंने उद्देश्य-सी विधियों के बजाय सी फ़ंक्शन के रूप में संशोधित किया। मेरे मामले में, मैं इस कार्यक्षमता को अपने ऐप पर किसी ऑब्जेक्ट पर उपलब्ध करना चाहता हूं, और कार्यक्षमता को किसी भी प्रकार के लगातार भंडारण (ivars) की आवश्यकता नहीं होती है। लेकिन अन्यथा, महान स्निपेट! –
यहाँ एक और Mr.Granoff https://github.com/granoff/Lockbox से अच्छा आवरण वर्ग धन्यवाद
- 1. क्या मैं PHP के क्रिप्ट() फ़ंक्शन का सही उपयोग कर रहा हूं?
- 2. आईफोन पर कोर प्लॉट का उपयोग करके मैं स्टॉक वॉल्यूम चार्ट कैसे कार्यान्वित कर सकता हूं?
- 3. पायथन का उपयोग करके, मैं विंडोज नेटवर्क पर साझा फ़ोल्डर का उपयोग कैसे कर सकता हूं?
- 4. ऐप्पल की कीचेन एक्सेस
- 5. UIWebView का उपयोग करके, क्या मैं एक कस्टम फ़ॉन्ट का उपयोग कर सकता हूं?
- 6. मैं अजीब का उपयोग करके क्या कर सकता हूं कि मैं पर्ल में नहीं कर सकता?
- 7. आईफोन सिम्युलेटर का उपयोग करके मैं लैंडस्केप व्यू का परीक्षण कैसे कर सकता हूं?
- 8. Passport.js का उपयोग करके मैं OAuth के स्टेट पैरामीटर को कैसे एक्सेस कर सकता हूं?
- 9. आईफोन: मैं gcov का उपयोग कैसे कर सकता हूं?
- 10. अमरूद का उपयोग करके मैं यह कैसे कर सकता हूं?
- 11. क्या मैं जीएई पर वसंत का उपयोग कर सकता हूं?
- 12. क्या मैं सरणी पर update_all का उपयोग कर सकता हूं?
- 13. क्या मैं एंड्रॉइड पर jmonkeyengine का उपयोग कर सकता हूं?
- 14. क्या मैं संगीत जीनोम प्रोजेक्ट का उपयोग कर सकता हूं?
- 15. क्या मैं एक्सकोड का उपयोग कर अपने आईफोन के फाइल सिस्टम तक पहुंच सकता हूं?
- 16. आईफोन: मैं NSUserDefaults का उपयोग करके UIImage को कैसे स्टोर कर सकता हूं?
- 17. ब्रैकेट नोटेशन का उपयोग करके मैं सदस्य फ़ंक्शन कैसे आमंत्रित कर सकता हूं?
- 18. क्या मैं सदस्य फ़ंक्शन पर boost :: enable_if का उपयोग कर सकता हूं?
- 19. क्या मैं सॉकेट.ओओ से कुकी एक्सेस कर सकता हूं?
- 20. मैं ऐप्पल कीचेन का उपयोग कैसे करूं?
- 21. PHP क्रिप्ट() फ़ंक्शन .Net में?
- 22. क्या मैं स्मृति में कुछ भी एक्सेस कर सकता हूं?
- 23. क्या मैं फ़ंक्शन संरचना का सही उपयोग कर रहा हूं?
- 24. क्या मैं गो में प्रतिबिंब का उपयोग करके एक नया फ़ंक्शन बना सकता हूं?
- 25. UIPanGestureRecognizer का उपयोग करके मैं किस दिशा को प्रतिबंधित कर रहा हूं कैप्चर कर सकता हूं?
- 26. क्या मैं PHP और OData का उपयोग करके MySQL डेटा का पर्दाफाश कर सकता हूं?
- 27. क्या मैं DialogViewController (MonoTouch.Dialog) की पृष्ठभूमि को स्पर्श करके आईफोन कीबोर्ड को खारिज कर सकता हूं?
- 28. मैं हेरोोकू पर rdiscount का उपयोग कैसे कर सकता हूं?
- 29. मैं web2py में मॉड्यूल का उपयोग कैसे कर सकता हूं?
- 30. मैं वीबीए का उपयोग करके भेजे गए ईमेल पर "उच्च महत्व" कैसे सेट कर सकता हूं?
उनका कहना है कि बाहर के लिए धन्यवाद है! – maralbjo