如何在MyCrypto库中使用initWithModulus函数?

时间:2011-05-28 09:43:52

标签: iphone cryptography

我将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创建一个公钥。然后用原始密钥和新密钥加密相同的数据。但是两个加密数据的长度是不同的。我该怎么办?

1 个答案:

答案 0 :(得分:0)

长度不匹配的是什么?当我运行此代码时(在iOS 4模拟器中)它可以工作,加密数据的长度是256字节。

如果您尝试使用原始私钥进行加密,然后使用重组的公钥进行解密,那会有效吗?