相关疑难解决方法(0)

尝试编写NSString sha1函数,但它返回null

我有以下Objective-C函数:

+(NSString *)stringToSha1:(NSString *)str{
    NSMutableData *dataToHash = [[NSMutableData alloc] init];
    [dataToHash appendData:[str dataUsingEncoding:NSUTF8StringEncoding]];

    unsigned char hashBytes[CC_SHA1_DIGEST_LENGTH];
    CC_SHA1([dataToHash bytes], [dataToHash length], hashBytes);
    NSData *encodedData = [NSData dataWithBytes:hashBytes length:CC_SHA1_DIGEST_LENGTH];
    [dataToHash release];
    NSString *encodedStr = [NSString stringWithUTF8String:[encodedData bytes]];
    //NSString *encodedStr = [[NSString alloc]  initWithBytes:[encodedData bytes]
    //                                            length:[encodedData length] encoding: NSUTF8StringEncoding];
    NSLog(@"String is %@", encodedStr);

    return encodedStr;

}
Run Code Online (Sandbox Code Playgroud)

我要做的是采用NSString和SHA1编码.这部分似乎正在起作用,我认为我所处的位置是如何将NSData对象转换回清晰的字符串.如果我使用UTF8编码,我会变成空白,如果我说ASCII,我会得到奇怪的字符.我真正想要的是十六进制字符串,但我不知道如何获得它.这是使用iPhone 3.0 SDK.

目前,我传入的任何String都会返回NULL.

iphone sha1 objective-c nsstring nsdata

5
推荐指数
2
解决办法
1万
查看次数

iOS中特定字符串的SHA1

根据我的要求:

  1. 输入字符串必须转换为字节值.
  2. 字符串的每个字符(16位值)必须转换为低8位.
  3. 然后在字节数组上计算Sha1.
  4. 生成的SHA-1将转换为40个字符的字符串.

我知道如何将字符串转换为SHA1,但剩下的部分对我来说有点暗淡.我已经能够完成最后两个步骤.

unsigned char digest[CC_SHA1_DIGEST_LENGTH];
NSData *dataString = [yourString dataUsingEncoding: NSUTF8StringEncoding]; 

if (CC_SHA1([dataString bytes], [dataString length], digest)) {
   //Sha1 is calculated & stored in digest.
}
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

sha1 objective-c ios

2
推荐指数
1
解决办法
3145
查看次数

标签 统计

objective-c ×2

sha1 ×2

ios ×1

iphone ×1

nsdata ×1

nsstring ×1