2012-10-15 53 views
0

我在執行AES解碼器,用於創建IV和鍵轉換的NSString UTF8,該算法是這樣的,目標C與填充

IV Key的16個字節:前16個字節的ProductID.getBytes(「UTF8 「)

  (If there are no enough bytes,  

      make up to 16 bytes at right by 0x32) 

和我的填充

- (char*)paddedStringFromString:(NSString *)string withLength:(NSUInteger)length{ 
    const char *stringC = [string UTF8String]; 
    char * output; 
    output = malloc(length+1); 
    for (NSInteger i = 0; i < length; i++) { 
     if (i < string.length) output[i] = stringC[i]; 
     else output[i] = 0x32; 
    } 
    return output; 
} 

代碼,但我沒有得到正確的結果。我的填充方法是正確的。請幫忙

+1

請記住,如果您的NSString中包含非ASCII字符,則生成的UTF8字符串將比NSString更長。我將16個空格連接到NSString,轉換爲UTF8,然後獲取前16個字節。 –

+0

另一種方式我可以這樣做是使用'strlen'來確定UTF8的長度,將其複製到最大16個字符的緩衝區,然後根據需要進行填充。 –

+0

以及現在在我的測試中,IV的值是@「123」,所以在你的方法中,如果我連接16個空格,但我需要添加填充0x32(UTF8)...所以在nsstring中,我該怎麼做那 – cocoaNoob

回答

0

我覺得args的長度和string.length是不一樣的吧?