2012-08-30 10 views
5

Tôi có một mã Java như thế này:Iphone: làm thế nào toValidate mã xác thực thông điệp (Mac)

public static byte[] generateMac(byte[] key, byte[] cipherText,int offset,int length,int mac_size_bits) 
{ 
    byte[] result = null; 
    KeyParameter keyParam = null; 
    try { 
     keyParam = new KeyParameter(key); 
     CBCBlockCipherMac blockCipherMac = new CBCBlockCipherMac(new AESEngine(),mac_size_bits); 
     result = new byte[blockCipherMac.getMacSize()]; 
     blockCipherMac.init(keyParam); 
     blockCipherMac.update(cipherText, offset, length); 
     blockCipherMac.doFinal(result, 0); 
    } catch (Exception e) { 
     // System.out.println(e); 
     return null; 
    } finally { 
     keyParam = null; 
    } 
    return result; 
} 

Trên iPhone Tôi viết nguệch ngoạc như thế này:

- (NSData *)generateMac:(NSData *)key cipherText:(NSData *)cipherText offset:(int)offset length:(int)length mac_size_bits:(int)mac_size_bits

Câu hỏi của tôi là, Tôi nên sử dụng phương thức nào cho CBCBlockCipherMac, keyparameters trong iPhone có thể giúp tôi bất kỳ?

+0

An ninh nào là, trong iPhone/Mục tiêu c, có libKrypto và nếu AES của nó, thì nguồn mở của nó mà bạn có thể sử dụng ... – Amitg2k12

+0

bộ mã hóa phổ biến mà tôi đang sử dụng – 012346

Trả lời

1

mã hóa MAC của nó - AFAIK không có thay thế one-shot/tương đương trên IOS

xem tài liệu gốc docs và wikipedia wiki

học cách thức hoạt động algo và sau đó sao chép nó bằng cách sử CommonCrypto

--xin lỗi không có ý tưởng nào tốt hơn