【发布时间】:2017-11-20 19:29:16
【问题描述】:
我有这个解码方法:
-(NSString *)decrypt:(NSString *)encryptedTextValue withSecret:(NSString*)secret
{
NSData *encryptedData = [NSData base64DataFromString:encryptedTextValue];
NSData *decryptedData = [encryptedData decryptedAES256DataUsingKey:[[secret dataUsingEncoding:NSUTF8StringEncoding] SHA256Hash] error:nil];
NSString *plainText = [[NSString alloc] initWithData:decryptedData encoding:NSUTF8StringEncoding];
return plainText;
}
和解密的AES256DataUsingKey方法,是这样的:
- (NSData *) AES256EncryptedDataUsingKey: (id) key error: (NSError **) error
{
CCCryptorStatus status = kCCSuccess;
NSData * result = [self dataEncryptedUsingAlgorithm: kCCAlgorithmAES128
key: key
options: kCCOptionPKCS7Padding
error: &status];
if ( result != nil )
return ( result );
if ( error != NULL )
*error = [NSError errorWithCCCryptorStatus: status];
return ( nil );
}
我也有哈希,即:
wnXGfwFQr4463RLAczVJGw==
谁能告诉我如何将其解码为原始字符串? 我也有密钥,但我不明白我应该如何 ecnode 来解码哈希。
【问题讨论】:
-
你有
secret吗?hashe是什么,不是它的价值是什么? -
@zaph 是的,我有秘密。这个方法来自框架,叫做 Securely,它在应用程序上编码一些信息,这些信息是用 Appcelerator 编码的,现在我正在将应用程序转换为本地语言(Swift),并且需要解码以前的 Keychain key;value 对。
-
请参阅this answer 示例使用 Common Crypto 的 Swift 代码,它有助于您的转换。
-
@zaph 你知道吗,我应该以哪种方式将秘密传递给那个函数?如果我只使用字符串,那么我会收到错误>>错误 aesCBCEncrypt: KeyError("Invalid key length", 18) 看起来在我发布的方法中,它需要密钥的 SHA256 哈希值或其他东西,
标签: objective-c encoding aes decoding string-decoding