我四处搜寻了几个小时,找到了一些可以帮助我尝试做什么但找不到我工作的东西。
基本上我要做的是加密我的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);
非常感谢您的帮助。我一直在寻找,但没有发现任何对我有用的东西。认为他们会更多地向我提出类似的问题,因为它似乎是常用的东西。
答案 0 :(得分:1)
首先,为什么需要将密码发送到加密的服务器?为什么不通过SSL连接发送它,然后让服务器验证密码是否与数据库中的密码哈希相匹配?此外,应该不需要加密用户名。只是密码。
为了加密然后解密,您将需要某种可以记忆的加密密钥或密码。我建议您在iPhone上加密密码,然后在服务器上简单地存储它。您可以使用php的crypt()函数轻松创建哈希并将它们存储在数据库中。