RSA解密失败解决方案

在使用Objective-C-RSA进行RSA解密遇到的问题:

1、使用github上demo中的公钥串和私钥串,加解密是可以成功

2、通过RSA密钥生成器生成的公钥串和私钥串,加密可成功,解密失败

通过跟踪代码发现问题出现在:stripPrivateKeyHeader 这个方法中,

unsigned char *c_key = (unsigned char *)[d_key bytes];

unsigned int  idx = 22; //magic byte at offset 22    

if (0x04 != c_key[idx++]) {         return nil;     }

由于c_key[idx++] != 0x04,所以直接返回nil;

针对这种情况,尝试将addPrivateKey方法中,data = [RSA stripPrivateKeyHeader:data];的调用删除,删除后发现加解密可成功

这行代码是干什么的作用是什么呢?

原因是,MAC下生成的私钥不能直接被使用,需要进行PKCS#8编码 编码之后就可以了

pkcs8 -topk8 -in rsa_private_key.pem -out pkcs8_rsa_private_key.pem -nocrypt

为了解决通过pem生成的私钥解密问题,所以此处可以修改代码,通过判断是否需要是pem生成的私钥还是私钥字符串,来决定是否调用stripPrivateKeyHeader方法

你可能感兴趣的:(RSA解密失败解决方案)