Trên iPhone, sandbox sẽ ngăn mọi người truy cập vào mật khẩu của bạn. trên máy tính để bàn nó không phải là dễ dàng như vậy.
Bạn nên lưu trữ mật khẩu dưới dạng băm chứ không phải cleartext. Tôi tin rằng điều này sẽ giúp bạn có được kết quả mong muốn mà không ảnh hưởng đến chức năng. Chỉ nghĩ rằng bạn sẽ không bao giờ có thể làm là truy cập lại mật khẩu cleartext - nếu bạn muốn phân tích nó cho sức mạnh hoặc chuyển nó vào một dịch vụ khác. Nói chung mặc dù, hashes sẽ không hy sinh chức năng.
Đoạn mã sau lấy mật khẩu trong rawPassword và lưu mã băm SHA-1 của nó trong mật khẩuHash.
#import <CommonCrypto/CommonDigest.h>
const char* utf8PasswordRepresentation = [rawPassword UTF8String];
unsigned char * rawHash = malloc(CC_SHA1_DIGEST_LENGTH);
CC_SHA1(utf8PasswordRepresentation, strlen(utf8PasswordRepresentation), rawHash);
NSMutableString* passwordHash = [NSMutableString CC_SHA1_DIGEST_LENGTH*2];
for (int i = 0 ; i< CC_SHA1_DIGEST_LENGTH; i++)
[passwordHash appendFormat:@"%02x" , rawHash[i]];
Lưu ý rằng không có quản lý bộ nhớ tại đây.
Khám phá mục nhập wikipedia cho số explanation of password hashing.
Có nhiều phiên bản của cùng mã này xung quanh các intertubes.
Nguồn
2009-04-15 07:16:29
Tại sao bạn đặc biệt cần phải lưu trữ chúng trong một chuỗi và tại sao có những người cố gắng để có được ở bộ nhớ đó? –