我已经获得了一个之前由另一个人保留的项目,我必须安装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,工作得很好。 有什么想法吗?
答案 0 :(得分:0)
为了解决这个问题,我不得不使用OpenSSL框架的分叉版本,其中libcrypto.a和libssl.a库已降级为proyect原始使用的相同修改版本。 这样,旧的加密方法和我添加的新加密方法正在运行。