Eam*_*orr 12 iphone objective-c sha256
问候,
我在Objective C中生成SHA256字符串时遇到了麻烦(可能是因为我对语言这么新).
在jQuery中,我所要做的就是:
var sha256String=$.sha256("Hello");
Run Code Online (Sandbox Code Playgroud)
它按预期产生哈希值.
但是在Objective-C中,我尝试了以下内容无济于事:
NSString *pword=[[NSString alloc]
initWithString:login_pword.text];
unsigned char result[64];
CC_SHA256([pword UTF8String], [pword lengthOfBytesUsingEncoding:NSASCIIStringEncoding],result);
UIAlertView *msg=[[UIAlertView alloc] initWithTitle:@"Hi" message:result delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[msg show];
[msg release];
Run Code Online (Sandbox Code Playgroud)
是否有一些我可以调用的功能,如:
NSString *sha256String=[self getSHA256:pword];
Run Code Online (Sandbox Code Playgroud)
这就是我想要创造的东西,我发现它很难!
我希望有人能帮帮忙.
提前谢谢了,
Eam*_*orr 56
经过大量的游戏,我终于想出了一个获得SHA256的功能:
-(NSString*) sha256:(NSString *)clear{
const char *s=[clear cStringUsingEncoding:NSASCIIStringEncoding];
NSData *keyData=[NSData dataWithBytes:s length:strlen(s)];
uint8_t digest[CC_SHA256_DIGEST_LENGTH]={0};
CC_SHA256(keyData.bytes, keyData.length, digest);
NSData *out=[NSData dataWithBytes:digest length:CC_SHA256_DIGEST_LENGTH];
NSString *hash=[out description];
hash = [hash stringByReplacingOccurrencesOfString:@" " withString:@""];
hash = [hash stringByReplacingOccurrencesOfString:@"<" withString:@""];
hash = [hash stringByReplacingOccurrencesOfString:@">" withString:@""];
return hash;
}
Run Code Online (Sandbox Code Playgroud)
这提供了与PHP相同的输出.它可以很容易地转换为SHA1 - 只需将'SHA256'更改为'SHA1'即可.
希望它可以帮助某人.
您正在传递result到UIAlertView的方法init。result是一个char[],并且UIAlertView期望一个NSString*。您需要将您的转换char[]为NSString *.
尝试这个:
NSString *resultString = [NSString stringWithCString:result encoding:NSASCIIStringEncoding];
UIAlertView *msg=[[UIAlertView alloc] initWithTitle:@"Hi" message:resultString delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
Run Code Online (Sandbox Code Playgroud)
另请参阅这篇有关 iPhone 上的哈希的文章。
| 归档时间: |
|
| 查看次数: |
25380 次 |
| 最近记录: |