相关疑难解决方法(0)

将NSData序列化为十六进制字符串的最佳方法

我正在寻找一种很好的可可方式将NSData对象序列化为十六进制字符串.我们的想法是将用于通知的deviceToken序列化,然后再将其发送到我的服务器.

我有以下实现,但我认为必须有一些更短更好的方法来实现它.

+ (NSString*) serializeDeviceToken:(NSData*) deviceToken
{
    NSMutableString *str = [NSMutableString stringWithCapacity:64];
    int length = [deviceToken length];
    char *bytes = malloc(sizeof(char) * length);

    [deviceToken getBytes:bytes length:length];

    for (int i = 0; i < length; i++)
    {
        [str appendFormat:@"%02.2hhX", bytes[i]];
    }
    free(bytes);

    return str;
}
Run Code Online (Sandbox Code Playgroud)

iphone notifications nsdata

99
推荐指数
6
解决办法
5万
查看次数

需要像Java一样在Objective C中生成HMAC SHA256哈希

我需要使用HMAC SHA256生成哈希.我在Java中使用以下代码.我需要Objective-C中的等效代码.

javax.crypto.Mac mac = javax.crypto.Mac.getInstance(type);
javax.crypto.spec.SecretKeySpec secret = new javax.crypto.spec.SecretKeySpec(key.getBytes(), type);
mac.init(secret);
byte[] digest = mac.doFinal(value.getBytes());      
StringBuilder sb = new StringBuilder(digest.length * 2);
String s="";
for (byte b: digest) {
    s = Integer.toHexString(b);
    if (s.length() == 1) {
        sb.append('0');
    }
    sb.append(s);
}
return sb.toString();
Run Code Online (Sandbox Code Playgroud)

键= YARJSuwP5Oo6/r47LczzWjUx/T8ioAJpUK2YfdI/ZshlTUP8q4ujEVjC0seEUAAtS6YEE1Veghz+IDbNQb+2KQ==

价值=

id=456|time=19:10|nonce=8

输出=

4effffffd8ffffffce7cffffffc4ffffffc71b2f72ffffffdc21ffffffa1ffffffe0ffffffe62d32550b0771296bffffff9c1159ffffffdeffffff8675ffffff9928654c
Run Code Online (Sandbox Code Playgroud)

我有这个Objective-C功能:

  //Hash method Definition
    - (NSString *)getHashEncription:(NSString *)key andData:(NSString *)data{

        NSLog(@"Secret Key %@ And Data %@", key, data);

        const char *cKey  = [key cStringUsingEncoding:NSASCIIStringEncoding];
        const char *cData = [data …
Run Code Online (Sandbox Code Playgroud)

java hash objective-c hmac

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

标签 统计

hash ×1

hmac ×1

iphone ×1

java ×1

notifications ×1

nsdata ×1

objective-c ×1