저는 iPhone에서 Cbjective-C를 사용하여 간단한 RSA 암호화를 수행하는 방법에 대한 Google의 조사와 답을 제공해 왔습니다. 내가 가진 주요 문제는 NSData
개체로 지수 및 모듈러스가 제공되었으며이를 RSA 암호화를 수행하기 위해 SecKeyRef
개체로 변환해야합니다.iPhone/Objective-c RSA 암호화
누구든지 그 방법을 알고 있거나 유용한 힌트가 있습니까?
감사합니다.
저는 iPhone에서 Cbjective-C를 사용하여 간단한 RSA 암호화를 수행하는 방법에 대한 Google의 조사와 답을 제공해 왔습니다. 내가 가진 주요 문제는 NSData
개체로 지수 및 모듈러스가 제공되었으며이를 RSA 암호화를 수행하기 위해 SecKeyRef
개체로 변환해야합니다.iPhone/Objective-c RSA 암호화
누구든지 그 방법을 알고 있거나 유용한 힌트가 있습니까?
감사합니다.
내 프로젝트에서 OpenSSL 사용이 끝났습니다. 키를 가져오고 아이폰 대신 해당 라이브러리를 사용하여 암호화하십시오.
이 솔루션을 구현하여 GitHub에 저장했습니다. 이제 OpenSSL 대신 키 체인에 Apple에서 허가 한 API를 사용할 수 있습니다. (그들은 불행하게도, 그들의 문헌에 OpenSSL을 낙담.)
https://github.com/StCredZero/SCZ-BasicEncodingRules-iOS
구현 지수를 사용하여 아이폰 OS 키 체인에 RSA 키 가져 오기를 활성화합니다. 코드는 ARC가 적용된 iOS 5를 대상으로합니다.
의 계수와 지수를 이미 pubKeyModData 및 pubKeyModData 변수에 NSData로 RSA 공개 키가 있다고 가정 해 보겠습니다. 다음 코드는 RSA 공개 키를 포함하는 NSData를 생성 한 다음 iOS 또는 OS X 키 체인에 삽입 할 수 있습니다. keyBits : : 방법 SecKeyWrapper에서 애플 CryptoExercise 예에서
NSMutableArray *testArray = [[NSMutableArray alloc] init];
[testArray addObject:pubKeyModData];
[testArray addObject:pubKeyExpData];
NSData *testPubKey = [testArray berData];
이것은 당신이 addPeerPublicKey를 사용하여 키를 저장할 수있다. 또는 저수준 API의 관점에서 보면 SecItemAdd()를 사용할 수 있습니다.
NSString * peerName = @"Test Public Key";
NSData * peerTag =
[[NSData alloc]
initWithBytes:(const void *)[peerName UTF8String]
length:[peerName length]];
NSMutableDictionary * peerPublicKeyAttr = [[NSMutableDictionary alloc] init];
[peerPublicKeyAttr
setObject:(__bridge id)kSecClassKey
forKey:(__bridge id)kSecClass];
[peerPublicKeyAttr
setObject:(__bridge id)kSecAttrKeyTypeRSA
forKey:(__bridge id)kSecAttrKeyType];
[peerPublicKeyAttr
setObject:peerTag
forKey:(__bridge id)kSecAttrApplicationTag];
[peerPublicKeyAttr
setObject:testPubKey
forKey:(__bridge id)kSecValueData];
[peerPublicKeyAttr
setObject:[NSNumber numberWithBool:YES]
forKey:(__bridge id)kSecReturnPersistentRef];
sanityCheck = SecItemAdd((__bridge CFDictionaryRef) peerPublicKeyAttr, (CFTypeRef *)&persistPeer);