【问题标题】:Decrypting RSA with MIHCrypto (OpenSSL-Universal on iOS)使用 MIHCrypto 解密 RSA(iOS 上的 OpenSSL-Universal)
【发布时间】:2015-04-11 20:28:58
【问题描述】:

您好,我遇到了使用 MIHCrypto v0.3.2 解密的问题。这些是我的代码行:

NSString *encrypted_text = @"BdhFH0sd7e9DExiCd50Ykh4spm2BX126skjJ1o8HHjKsN+J7r9IoI9kbB9AAacEpJsAfyesiJsq5gDBhQtcNbB6l88aSgPrEoVwR9ilzuzVcv1q3J1dxs4uIEMuhzoWT+R8//dD2jDdXPyFsdGWJc10CEizPFKpmy2jWhvU8CVs=";
NSBundle *myBundle = [NSBundle mainBundle];
NSString *privateKeyPath= [myBundle pathForResource:@"rsa_1024_priv" ofType:@"pem"];    
NSData *privateKeyData = [[NSFileManager defaultManager] contentsAtPath:privateKeyPath];
MIHRSAPrivateKey *privateKey = [[MIHRSAPrivateKey alloc] initWithData:privateKeyData];
NSError *decryptionError = nil;

// decryption
NSData *encData = [encrypted_text dataUsingEncoding:NSUTF8StringEncoding];
NSData *decryptedEncData = [privateKey decrypt:encData error:&decryptionError];
NSString* decryptedText = [[NSString alloc] initWithData:decryptedEncData encoding:NSUTF8StringEncoding]; // iOS 7+, by iOS Core API

if(decryptionError){
    DDLogDebug(@"error: %@",[encryptionError localizedDescription]);
}
DDLogDebug(@"decrypted: %@",decryptedEncData);

问题在这里调试:

错误:OpenSLL 内部错误! (Code=67522668,Description=error:0406506C:rsaroutines:RSA_EAY_PRIVATE_DECRYPT:data大于mod len)

你有什么想法吗?

【问题讨论】:

    标签: ios objective-c encryption rsa


    【解决方案1】:

    我终于找到了解决办法:

    使用更短的数据块!

    背景(由 Hohl 发布 - here):

    对大数据块使用 RSA 似乎是一个常见问题。一些 包装器通过将数据拆分成更小的块来处理这个问题 分别加密每个块。但由于 RSA 不打算 加密大块数据,这不会在这个包装器中实现。 (如果您需要以下功能,最好将 RSA 与 AES 之类的东西结合起来 两个世界。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-14
      • 1970-01-01
      • 1970-01-01
      • 2015-03-02
      • 2021-08-27
      相关资源
      最近更新 更多