美文网首页
Byte 转 char[] 数组的用法

Byte 转 char[] 数组的用法

作者: 贪威风 | 来源:发表于2018-03-20 17:19 被阅读0次

    今天在做md5加密的时候,因为硬件端用的是传入char[] 数据进行MD5加密,而我ios端生成的是字符型的数据,在转换过后,最后加密始终得不到跟文档一样的结果,现在终于解决该问题,记录一下。

    下面为代码:

    //摘要的长度

    #define CC_MD5_DIGEST_LENGTH 16

    //开辟一个16字节(128位:md5加密出来就是128位/bit)的空间(一个字节=8字位=8个二进制数)

    uint8_t buffer[CC_MD5_DIGEST_LENGTH];

    //输入的字符是采用16进制的数字,所以这里有一个转化

    NSData * testData = [Encryption convertHexStrToData: chrSource];

    Byte * byteArray = (Byte *)[testData bytes];

    //这里的24,是因为我传递过来的字符是固定长48位的,

     char input[24] ={byteArray[0],byteArray[1],byteArray[2],byteArray[3],byteArray[4],byteArray[5],byteArray[6],byteArray[7],byteArray[8],byteArray[9],byteArray[10],byteArray[11],byteArray[12],byteArray[13],byteArray[14],byteArray[15],byteArray[16],byteArray[17],byteArray[18],byteArray[19],byteArray[20],byteArray[21],byteArray[22],byteArray[23]};

    // MD5加密, 把str字符串转换成了32位的16进制数列(这个过程不可逆转) 存储到了result这个空间中

    CC_MD5(input, (CC_LONG)sizeof(input), buffer);

    //转化函数

    //16进制转换为NSData

    + (NSData*)convertHexStrToData:(NSString*)str

    {

        if (!str || [str length] ==0)

        {

            return nil;

        }

        NSMutableData *hexData = [[NSMutableData alloc]initWithCapacity:[str length] * 2];

        NSRange range;

        if ([str length] %2==0)

        {

            range = NSMakeRange(0,2);

        }

        else

        {

            range = NSMakeRange(0,1);

        }

        for (NSInteger i = range.location; i < [str length]; i +=2)

        {

            unsigned int anInt;

            NSString *hexCharStr = [str substringWithRange:range];

            NSScanner *scanner = [[NSScanner alloc]initWithString:hexCharStr];

            [scanner scanHexInt:&anInt];

            NSData *entity = [[NSData alloc]initWithBytes:&anInt length:1];

            [hexData appendData:entity];

            range.location+= range.length;

            range.length=2;

        }

        NSLog(@"hexdata: %@", hexData);

        return hexData;

    }

    相关文章

      网友评论

          本文标题:Byte 转 char[] 数组的用法

          本文链接:https://www.haomeiwen.com/subject/eqvolxtx.html