我在附近搜索了幾個小時,找到了一些可能幫助我瞭解即時消息嘗試做什麼但找不到任何事情的工作。在Objective-C中加密登錄證書並在PHP中解密
基本上我想要做的是在我的iPhone應用程序中加密登錄憑據(用戶名和密碼),將它們發送到我的服務器上的php文件,解密它們並驗證數據庫中的內容。
我在iPhone開發方面非常精通,但與密碼學/安全相關的任何事情都知之甚少。我想我正在做正確的本地iphone加密以及正確地發送加密數據的blob,但不知道從哪裏開始在php解密端。
下面有一些使用
NSString* stringTo = @"Test Encoding String";
NSString* key = @"1234567812345678";
NSData* encrypedData = [[stringTo dataUsingEncoding:NSUTF8StringEncoding] AES256EncryptWithKey:key];
NSString* decrypt = [[NSString alloc] initWithData:[encrypedData AES256DecryptWithKey:key] encoding:NSUTF8StringEncoding];
NSLog(@"\nDECRYPT :%@", decrypt); // DOES RETURN THE SAME VALUE
NSString *urlString = @"SERVERNAME/FILE.php";
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];
NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"];
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
[request addValue:contentType forHTTPHeaderField:@"Content-Type"];
NSMutableData *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"encryptedString\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:encrypedData];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:body];
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
NSLog(@"RS: %@", returnString);
非常感謝任何幫助代碼IM的。我一直在尋找一段時間,並沒有找到任何爲我工作的東西。認爲他們會更喜歡與我類似的問題,因爲它似乎是一種常用的東西。
我沒有注意到你之前回答的「忘記登錄」評論。真的有必要返回相同的密碼嗎?爲什麼不給用戶選擇重置密碼。當我點擊「忘記密碼」按鈕時,我實際上生氣了,他們給我發了我當前的密碼,因爲它顯示他們正在將數據以易於檢索的格式(可能是純文本)存儲起來。 – Mike
嗯,我不會以純文本的形式存儲它,只是在發送它們之前解密它,但這是一個很好的選擇。爲他們提供一個隨機的臨時密碼。 – JLoewy
實際上,使用解密密鑰在服務器上的任何位置存儲它,實質上都是以純文本形式存儲它。 – Mike