iOS 代码:
//step 1
//start of key pair genration
NSString * PrivTagString = @"com.manish.rsa.privIdentifier";
NSString * PubTagString = @"com.manish.rsa.pubIdentifier";
privateTag = [PrivTagString dataUsingEncoding:NSUTF8StringEncoding];
publicTag = [PubTagString dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *privateAttributes = @{(NSString *)kSecAttrIsPermanent: @YES, (NSString *)kSecAttrApplicationTag: privateTag};
NSDictionary *publicAttributes = @{(NSString *)kSecAttrIsPermanent: @YES, (NSString *)kSecAttrApplicationTag: publicTag};
NSDictionary *pairAttributes = @{(NSString *)kSecAttrKeyType: (NSString *)kSecAttrKeyTypeRSA, (NSString *)kSecAttrKeySizeInBits: @2048, (NSString *)kSecPublicKeyAttrs: publicAttributes, (NSString *)kSecPrivateKeyAttrs: privateAttributes};
OSStatus osStatus = SecKeyGeneratePair((CFDictionaryRef)pairAttributes, &publicKeyRef, &privateKeyRef);
switch (osStatus) {
case noErr:
break;
default:
break;
}
//end of key pair key genration
//step2
//export ublic key for java server
NSLog(@"%@",[self getPublicKeyAsBase64ForJavaServer]);
//step3
//Create the SHA256 digest of the custom string with CC_SHA256
NSString *stringToSign = @"Manish";
NSMutableData *hash = [NSMutableData dataWithLength:(NSUInteger)CC_SHA256_DIGEST_LENGTH];
NSData *data = [stringToSign dataUsingEncoding:NSUTF8StringEncoding];
CC_SHA256(data.bytes, (CC_LONG)data.length, hash.mutableBytes);
//step4
// Sign the hash with the private key
size_t blockSize = SecKeyGetBlockSize(privateKeyRef);
NSUInteger hashDataLength = hash.length;
const unsigned char *hashData = (const unsigned char *)hash.bytes;
NSMutableData *result = [NSMutableData dataWithLength:blockSize];
uint8_t *signedHashBytes = malloc(blockSize * sizeof(uint8_t));
memset((void *) signedHashBytes, 0x0, blockSize);
size_t encryptedDataLength = blockSize;
慕容708150
BIG阳
随时随地看视频慕课网APP
相关分类