如何从Objective-C中的PrivateKey获取RSA参数(指数和模)?

如何从Objective-C中的PrivateKey获取RSA参数(指数和模)?,objective-c,rsa,private-key,exponent,Objective C,Rsa,Private Key,Exponent,我试图从Objective-C中的私钥中获取RSA私有参数(D,e) 到目前为止,我已经能够读取.p12文件并获取其公钥: { - (NSData *)getPublicKeyExp:(NSData*) bitsPublicKey { NSData* pk = bitsPublicKey; if (pk == NULL) return NULL; int iterator = 0; iterator++; // TYPE - bit stream - mod

我试图从Objective-C中的私钥中获取RSA私有参数(D,e)

到目前为止,我已经能够读取.p12文件并获取其公钥:

{
- (NSData *)getPublicKeyExp:(NSData*) bitsPublicKey
{
    NSData* pk = bitsPublicKey;
    if (pk == NULL) return NULL;

    int iterator = 0;

    iterator++; // TYPE - bit stream - mod + exp
    [self derEncodingGetSizeFrom:pk at:&iterator]; // Total size

    iterator++; // TYPE - bit stream mod
    int mod_size = [self derEncodingGetSizeFrom:pk at:&iterator];
    iterator += mod_size;

    iterator++; // TYPE - bit stream exp
    int exp_size = [self derEncodingGetSizeFrom:pk at:&iterator];

    return [pk subdataWithRange:NSMakeRange(iterator, exp_size)];
}

- (NSData *)getPublicKeyMod:(NSData*) bitsPublicKey
{
    NSData* pk = bitsPublicKey;
    if (pk == NULL) return NULL;

    int iterator = 0;

    iterator++; // TYPE - bit stream - mod + exp
    [self derEncodingGetSizeFrom:pk at:&iterator]; // Total size

    iterator++; // TYPE - bit stream mod
    int mod_size = [self derEncodingGetSizeFrom:pk at:&iterator];

    return [pk subdataWithRange:NSMakeRange(iterator, mod_size)];
}

- (int)derEncodingGetSizeFrom:(NSData*)buf at:(int*)iterator
{
    const uint8_t* data = [buf bytes];
    int itr = *iterator;
    int num_bytes = 1;
    int ret = 0;

    if (data[itr] > 0x80) {
        num_bytes = data[itr] - 0x80;
        itr++;
    }

    for (int i = 0 ; i < num_bytes; i++) ret = (ret * 0x100) + data[itr + i];

    *iterator = itr + num_bytes;
    return ret;
}
}
{
-(NSData*)getPublicKeyExp:(NSData*)bitsPublicKey
{
NSData*pk=bitsPublicKey;
如果(pk==NULL)返回NULL;
int迭代器=0;
迭代器+++;//TYPE-bit-stream-mod+exp
[self-derEncodingGetSizeFrom:pk at:&迭代器];//总大小
迭代器+++;//类型-位流模式
int mod_size=[self-derEncodingGetSizeFrom:pk at:&迭代器];
迭代器+=模块大小;
迭代器+++;//类型-位流exp
int exp_size=[self-derEncodingGetSizeFrom:pk at:&迭代器];
返回[pk subdataWithRange:NSMakeRange(迭代器,exp_size)];
}
-(NSData*)getPublicKeyMod:(NSData*)bitsPublicKey
{
NSData*pk=bitsPublicKey;
如果(pk==NULL)返回NULL;
int迭代器=0;
迭代器+++;//TYPE-bit-stream-mod+exp
[self-derEncodingGetSizeFrom:pk at:&迭代器];//总大小
迭代器+++;//类型-位流模式
int mod_size=[self-derEncodingGetSizeFrom:pk at:&迭代器];
返回[pk subdataWithRange:NSMakeRange(迭代器,mod_size)];
}
-(int)DeRecodingGetSizeFrom:(NSData*)buf at:(int*)迭代器
{
常量uint8_t*数据=[buf字节];
int itr=*迭代器;
int num_字节=1;
int-ret=0;
如果(数据[itr]>0x80){
num_bytes=数据[itr]-0x80;
itr++;
}
对于(inti=0;i
我得到了公共指数和模

我的问题是,当我尝试使用相同.p12格式的私钥执行相同操作时。我以前使用过相同的函数,但参数无效。在这个问题上我的脑子坏了。你能给我一些线索吗

提前谢谢