我将MyCrypto库用于iPhone应用程序。该程序将与WCF编写的Web服务通信。该服务将通过提供模数和指数来提供公钥。因此,我们需要使用initWithModulus来创建公钥。代码如下。
MYPrivateKey *pair = [[MYKeychain defaultKeychain] generateRSAKeyPairOfSize: 2048];
MYPublicKey *pub = pair.publicKey;
NSData * outModulus;
unsigned outExponent;
[pub getModulus:&outModulus exponent:&outExponent];
MYPublicKey *serverKey = [[MYPublicKey alloc] initWithModulus: outModulus exponent: outExponent];
NSString *tmpStr = @"test!";
NSData *tmpData = [tmpStr dataUsingEncoding: NSASCIIStringEncoding];
NSData *crypted = [serverKey rawEncryptData: tmpData];
NSData *crypted2 = [pub rawEncryptData: tmpData];
为了测试,我使用initWithModulus创建一个公钥。然后用原始密钥和新密钥加密相同的数据。但是两个加密数据的长度是不同的。我该怎么办?
答案 0 :(得分:0)
长度不匹配的是什么?当我运行此代码时(在iOS 4模拟器中)它可以工作,加密数据的长度是256字节。
如果您尝试使用原始私钥进行加密,然后使用重组的公钥进行解密,那会有效吗?