相同库的两个版本

时间:2015-12-29 09:30:29

标签: ios objective-c encryption openssl

我已经获得了一个之前由另一个人保留的项目,我必须安装OpenSSL才能做各种事情。 OpenSSL已经通过CocoaPods安装,它工作得很好。问题是该项目有另一个名为“Cipher”的库,它用于使用509x证书加密某些信息。 我没有触及代码的那部分,但它现在不再起作用了。 该库包含4个文件:libcrypto.a,libssl.a,oaep.c和oaep.h. 通过CocoaPods链接的OpenSSL库还包含libcrypto.a和libssl.a。

这是现在不再起作用的代码:

- (NSMutableString *)cipherWithBlock: (NSString *)string {
    NSMutableString *cipherBlock = [NSMutableString string];
    static NSString* stringBlock = kLIT_EMPTY;
    stringBlock = string;
    NSData *crt = [[IWUserController sharedInstance] publicKey];
    unsigned char block [DIGEST_BUFFER_SIZE];
    const char* msg = [stringBlock cStringUsingEncoding:[NSString defaultCStringEncoding]];
    cipher((void*)[crt bytes], crt.length, msg, block);
    for (int i = 0; i < DIGEST_BUFFER_SIZE; i++)
        [cipherBlock appendFormat:@"%02X", block[i], nil];
    return cipherBlock;
}

此方法实际上会生成一个encripted字符串,但是接收它的Web服务表示它无效。 我不知道该怎么做。我唯一知道的是旧版本具有相同的确切代码,但没有OpenSSL,工作得很好。 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

为了解决这个问题,我不得不使用OpenSSL框架的分叉版本,其中libcrypto.a和libssl.a库已降级为proyect原始使用的相同修改版本。 这样,旧的加密方法和我添加的新加密方法正在运行。