CommonCrypto 기능에 심각한 문제가 있습니다. BlackBerry 및 Windows Mobile에는 두 가지 기존 응용 프로그램이 있으며 둘 다 데이터 교환을 위해 ECB 모드로 Triple-DES 암호화를 사용합니다. 어느 쪽이든 암호화 된 결과는 같습니다.iPhone --- 3DES 암호화가 "잘못된"결과를 반환합니까?
는 지금은 우리의 아이폰 응용 프로그램에 3DES 암호화를 implent 할, 그래서 CommonCrypto 똑바로 갔다 : 나는 CBC 모드를 사용하는 경우 http://www.opensource.apple.com/source/CommonCrypto/CommonCrypto-32207/CommonCrypto/CommonCryptor.h
내가 어떤 결과를 얻을 수 있지만 결과와 일치하지 않는 자바 또는 C#. 어쨌든, 나는 ECB 모드를 사용하고 싶지만 전혀 작동하지 않는다. 매개 변수 오류가 나타난다. ...
이것은 ECB 모드에 대한 나의 요청이다. 비트 :
const void *vplainText;
plainTextBufferSize = [@"Hello World!" length];
bufferPtrSize = (plainTextBufferSize + kCCBlockSize3DES) & ~(kCCBlockSize3DES - 1);
plainText = (const void *) [@"Hello World!" UTF8String];
NSString *key = @"abcdeabcdeabcdeabcdeabcd";
ccStatus = CCCrypt(kCCEncrypt,
kCCAlgorithm3DES,
kCCOptionECBMode,
key,
kCCKeySize3DES,
nil, // iv, not used with ECB
plainText,
plainTextBufferSize,
(void *)bufferPtr, // output
bufferPtrSize,
&movedBytes);
t 여기에서 더 많거나 적은 코드 : http://discussions.apple.com/thread.jspa?messageID=9017515 그러나, 나는이 매개 변수 오류가 매번 얻을 이미 언급 ...
내가 대신 kCCOptionECBMode의 kCCOptionPKCS7Padding를 사용하여 설정 C#과 내 iPhone 코드에서 동일한 초기화 벡터, iPhone은 나에게 다른 결과를 제공합니다. bufferPtr에서 결과를 가져 와서 실수가 있습니까?
NSData *myData = [NSData dataWithBytes:(const void *)bufferPtr length:(NSUInteger)movedBytes];
result = [[NSString alloc] initWithData:myData encoding:NSISOLatin1StringEncoding];
내가 거의 모든 두 번 설정을 시도 것, 다른 인코딩 등등 ... 어디 내 오류가 있습니다 : 현재 내가 암호화 된 물건이 방법을 얻을?
팁 주셔서 감사합니다. kCCOptionPKCS7Padding (읽기 : CBC 모드)을 사용하여 실행 해 보았습니다. 출력물의 인코딩이 문제였던 것 같습니다. 대신이 ECB 모드를 사용 하겠지만, 왜 나는 오류가 발생하는지 궁금해합니다. kCCOptionECBMode가 사용되면 함수는 단지 kCCParamError를 반환합니다. –