Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编码密码objective-c mac_Objective C_Macos_Encryption_Nsstring_Passwords - Fatal编程技术网

编码密码objective-c mac

编码密码objective-c mac,objective-c,macos,encryption,nsstring,passwords,Objective C,Macos,Encryption,Nsstring,Passwords,如何对密码字符串进行编码并将其保存到Mac上objective-c中的文件中? 大概是这样的: NSString *myPasswordString = [NSString stringWithFormat:@"mypassword"]; //Encode //Save to Preferences file #导入 ... const char*cStr=[myPasswordString UTF8String]; 无符号字符结果[16]; CC_MD5(cStr,strlen(cStr

如何对密码字符串进行编码并将其保存到Mac上objective-c中的文件中? 大概是这样的:

NSString *myPasswordString = [NSString stringWithFormat:@"mypassword"];

//Encode

//Save to Preferences file
#导入
...
const char*cStr=[myPasswordString UTF8String];
无符号字符结果[16];
CC_MD5(cStr,strlen(cStr),结果);//这是md5电话
NSString*passwordAfterEncrypt=[NSString stringWithFormat:
@%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x“,
结果[0],结果[1],结果[2],结果[3],
结果[4],结果[5],结果[6],结果[7],
结果[8],结果[9],结果[10],结果[11],
结果[12],结果[13],结果[14],结果[15];
#导入
...
const char*cStr=[myPasswordString UTF8String];
无符号字符结果[16];
CC_MD5(cStr,strlen(cStr),结果);//这是md5电话
NSString*passwordAfterEncrypt=[NSString stringWithFormat:
@%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x“,
结果[0],结果[1],结果[2],结果[3],
结果[4],结果[5],结果[6],结果[7],
结果[8],结果[9],结果[10],结果[11],
结果[12],结果[13],结果[14],结果[15];

您可以按如下方式写入首选项文件:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[settings setObject : myPasswordString forKey : @"mypassword"];
[settings synchronize];
我不知道你说的“编码”是什么意思。如果您的意思是“加密”,那么有很多问题:


即使有了以上内容,您仍然需要仔细考虑安全问题。如果您存储的密码是使用应用程序中嵌入的密钥加密的,则攻击者可能会恢复该密码。

您可以按如下方式写入首选项文件:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[settings setObject : myPasswordString forKey : @"mypassword"];
[settings synchronize];
我不知道你说的“编码”是什么意思。如果您的意思是“加密”,那么有很多问题:


即使有了以上内容,您仍然需要仔细考虑安全问题。如果您存储的密码是使用应用程序中嵌入的密钥加密的,则攻击者可能会恢复该密码。

存储密码的更好方法是使用密钥链


有一些类可以让它变得更简单,比如在Github上存储密码的更好方法是使用钥匙链


有一些类可以让它变得更简单-比如在Github上

您可能想要加密密码,而不是编码密码(加密不能反转,编码可以)。我想最好的选择是使用
bcrypt
C库。@Joost是
bcrypt
用于objective-C mac cocoa吗?@Joost:加密可以反转;哈希不能。你想实现什么?如果您以后需要重新获得密码,请使用钥匙链。如果您只需要检查是否有人正确输入了密码,请使用为其设计的salt散列,如PBKDF2、bcrypt或scrypt。您可能希望对密码进行加密,而不是对其进行编码(加密无法逆转,编码可以)。我想最好的选择是使用
bcrypt
C库。@Joost是
bcrypt
用于objective-C mac cocoa吗?@Joost:加密可以反转;哈希不能。你想实现什么?如果您以后需要重新获得密码,请使用钥匙链。如果您只需要检查是否有人正确输入了它,请使用为其设计的salt散列,如PBKDF2、bcrypt或scrypt。对于MD5,您无法解码。您可以对用户输入的密码进行编码,并比较两个编码的密码,以查看用户是否输入了正确的密码。对于MD5,您无法解码。您可以对用户输入的密码进行编码,并比较两个编码的密码,以查看用户是否输入了正确的密码。在当前版本下,它将从底层Sec框架生成无效的用户名响应,并且基本上会破坏任何启用断点的项目。在当前版本下,它将从底层Sec框架生成一个无效的用户名响应,并且基本上会破坏任何启用断点的项目。