2014-04-21 14 views
11

Tôi đã mã hóa các trường dữ liệu lõi bằng cách sử dụng lớp 'SecKeyWrapper' được cung cấp trong một tài liệu của Apple. Lớp SecKeyWrapper không phải là ARC. Tôi tự hỏi liệu đây có phải là cách tốt nhất để mã hóa các trường dữ liệu lõi hay là có giải pháp mới hơn/tốt hơn?Mã hóa dữ liệu lõi iOS

Cảm ơn bạn

+2

sẽ là tuyệt vời để biết tại sao câu hỏi này đã được xuống bình chọn để tôi có thể cải thiện câu hỏi của tôi trong một cách tốt hơn, nếu không không có ý nghĩa với xuống phiếu :) – user390687

+1

FYI: nếu bạn di chuột qua mũi tên bỏ phiếu xuống, nó nói "** Câu hỏi này không hiển thị bất kỳ nỗ lực nghiên cứu nào **; không rõ ràng hoặc không hữu ích". Đó là phỏng đoán của tôi về lý do bỏ phiếu xuống. – showdev

Trả lời

25

Trong iOS 5 and later dữ liệu cốt lõi theo mặc định sử dụng NSFileProtection để bảo vệ vẫn kiên trì dữ liệu.

Đối với ứng dụng được tạo cho iOS 5.0 trở lên, các cửa hàng liên tục lưu trữ dữ liệu theo mặc định ở định dạng được mã hóa trên đĩa. Mức bảo vệ mặc định ngăn truy cập vào dữ liệu cho đến khi người dùng mở khóa thiết bị lần đầu tiên. Bạn có thể thay đổi mức độ bảo vệ bằng cách gán giá trị tùy chỉnh cho khóa NSPersistentStoreFileProtectionKey khi định cấu hình các cửa hàng liên tục của bạn. Để biết thêm thông tin về bảo vệ dữ liệu, có tính mới trong iOS 5.0, xem “Bảo vệ dữ liệu cải tiến.”

Nếu bạn muốn thay đổi hành vi bảo vệ tập tin mặc định cho cửa hàng Lõi dữ liệu của bạn, thay đổi giá trị cho khóa NSPersistentStoreFileProtectionKey đến một giá trị NSFileProtectionKey khác trong từ điển tùy chọn cửa hàng của bạn.

Ví dụ:

NSDictionary *storeOptions = @{NSPersistentStoreFileProtectionKey : NSFileProtectionComplete}; 

if (![coordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:[self storeURL] options:storeOptions error:&error]){ 
    [self presentError:error]; 
} 
+0

Cảm ơn @quellish. Tôi sẽ thử phương pháp này. Sẽ trở lại nếu tôi có bất kỳ câu hỏi nào. – user390687

+1

Hãy cẩn thận. "Mức bảo vệ mặc định ngăn truy cập vào dữ liệu cho đến khi người dùng mở khóa thiết bị lần đầu tiên." Dữ liệu sẽ không còn được mã hóa sau khi người dùng mở khóa thiết bị và sẽ vẫn như vậy ngay cả khi người dùng thiếu thiết bị một lần nữa. –

+1

Đó là lý do tại sao câu trả lời không sử dụng mặc định – quellish

Các vấn đề liên quan