0

可以一起使用 RNCryptor 和 firebase 吗?您不能将 NSData 存储到 firebase 中,而这就是 RNCryptor 使用的?

我可以通过哪些其他方式为后端加密用户数据?

4

2 回答 2

2

答案是肯定的!您可以将它与 Firebase 一起使用。

我们将 RNCryptor 集成到一个项目中,并使用它来加密和解密存储在 Firebase 中的私人数据。

在 ObjC 中加密

NSString *plainText = @"Hello!"
NSData *data = [plainText dataUsingEncoding:NSUTF8StringEncoding];
NSError *error;
NSData *encryptedData = [RNEncryptor encryptData:data
                                    withSettings:kRNCryptorAES256Settings
                                        password:aKey
                                           error:&error];

NSString *stringFromEncryptedData = [encryptedData 
         base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];

这是 ObjC 中的解密模式

NSData *dataFromEncryptedString = [[NSData alloc] 
          initWithBase64EncodedString:encryptedString 
                              options:NSDataBase64DecodingIgnoreUnknownCharacters];
NSError *error;
NSData *decryptedData = [RNDecryptor decryptData:dataFromEncryptedString
                                    withPassword:aKey
                                           error:&error];

NSString *plainText = [[NSString alloc] initWithData:decryptedData
                                            encoding:NSUTF8StringEncoding];

请注意,aKey 是您要用于加密/解密纯文本字符串的秘密字符串模式。

于 2016-07-04T12:17:41.520 回答
2

这是我的 swift 加密函数

func EncryptData(text: String) -> String {
    let Data: NSData = String(text).dataUsingEncoding(NSUTF8StringEncoding)!
    let Password = "Secret password"
    let EncryptedText = RNCryptor.encryptData(Data, password: "Secret password")

    return EncryptedText.base64EncodedStringWithOptions(.Encoding64CharacterLineLength)
}

这是我的解密函数

func DecryptData(text: String) -> String {
    let decodedData = NSData(base64EncodedString: text, options: .IgnoreUnknownCharacters)
    do {
        let originalData = try RNCryptor.decryptData(decodedData!, password: MasterKey)
        return  String(data: originalData, encoding: NSUTF8StringEncoding)!
    } catch {
        return "Data Error"
    }
}
于 2016-07-04T12:34:00.273 回答