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方法

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容