Objective-C-RSA
RSAEncryptor中使用了key chain。下面的方法中:
SecKeyRef keyRef = [RsaForSignature addPrivateKey:privKey];
在读取key chain中的值时,默认的是在应用未锁屏时可读取值。
所以应用在锁屏时, [RSAEncryptor encryptString: publicKey: ] 会返回空。
看代码,是把publicKey先存到了key chain中,再取出来。不知道为什么要这么作。
看其它的三方RSA库,并没有用到key chain。
后来发现之所以用key chain是下面的原因:
Security库只支持把二进制格式的der公钥转为SecKeyRef。
要使用pem格式的公钥(也就是一串字符串),正好keychain有把pem的公钥转为SecKeyFef的能力。
用openssl可以把pem转为der。
参考: