2016-04-19 33 views
1

請問你(任何人)請讓我知道我將如何使用Modulus和指數(只有兩個值,我們有)創建一個publicKey。Objective-c創建PublicKey

在java中這是如此的簡單。

RSAPublicKeySpec spec = new RSAPublicKeySpec(modulus, publicExponent); 
KeyFactory factory = KeyFactory.getInstance("RSA");                    
PublicKey pub = factory.generatePublic(spec); 

我想知道它是如何在objective-c中完成的。

回答

0

我設法實現相同的使用ideawu RSA libraies,我有一些關於公鑰編碼的問題,因爲他們的庫假設你需要關鍵中的頁腳和標題(即BEGIN PUBLIC KEY和END PUBLIC KEY)不URL編碼,我需要的結果,所以我稍微修改他們的方法之一,它的工作,完美:

+ (NSString *)encryptString:(NSString *)str publicKey:(NSString *)pubKey{ 

    NSData *decodedData = [[NSData alloc] initWithBase64EncodedString:pubKey options:0]; 
    NSString *decodedKey = [[NSString alloc] initWithData:decodedData encoding:NSUTF8StringEncoding]; 
    decodedKey = [decodedKey stringByReplacingOccurrencesOfString:@"-----BEGIN PUBLIC KEY-----\n" withString:@""]; 
    decodedKey = [decodedKey stringByReplacingOccurrencesOfString:@"-----END PUBLIC KEY-----" withString:@""]; 

    NSData *data = [RSA encryptData:[str dataUsingEncoding:NSUTF8StringEncoding] publicKey:decodedKey]; 
    NSString *ret = base64_encode_data(data); 
    ret = [ret stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet alphanumericCharacterSet]]; 
    return ret; 
} 

除此之外,該庫是很容易導入並沒有警告或錯誤編譯。