【问题标题】:Encryption in Firebase DatebaseFirebase 数据库中的加密
【发布时间】:2018-01-23 11:02:19
【问题描述】:

我一直在使用 Firebase,并且想知道在休息状态下 Firebase 数据的加密和解密。

在数据从 android 设备传输到 Firebase DB 期间,它主要是使用安全通道传输的。但是 Firebase 处于静止状态的数据呢?我想加密这样关键信息不会被泄露。

以及我们如何处理 Firebase 存储图像、视频、文档加密。

任何人都可以给出一个想法。

【问题讨论】:

标签: android encryption firebase firebase-security


【解决方案1】:

您可以使用JNCryptor (a third-party library) 来加密/解密字符串。我还不确定图像,虽然可能有一种方法可以先将图像转换为字符串,在这种情况下,您可以像往常一样对其进行加密。

在 iOS 中,它被称为“RNCryptor”(我相信它们可以很好地协同工作)。例如,这就是我在 Swift 中所做的(我还没有在 Android Java 中做过,虽然我认为它看起来应该很相似):

import UIKit
import RNCryptor

private let encryptKey = "32-chars-alpha-numeric-pass".data(using: .utf8)
private let hmacKey = "Some-other-32-chars-alpha-numeric-pass".data(using: .utf8)

extension String {

    func encryptIt() -> String {
        let data = self.data(using: .utf8)
        let encryptor = RNCryptor.EncryptorV3(encryptionKey: encryptKey!, hmacKey: hmacKey!)
        let ciphertext = encryptor.encrypt(data: data!)
        return ciphertext.base64EncodedString(options: NSData.Base64EncodingOptions.endLineWithCarriageReturn)
    }

    func decryptIt() -> String {
        do {
            let data = Data.init(base64Encoded: self)
            let decryptor = RNCryptor.DecryptorV3(encryptionKey: encryptKey!, hmacKey: hmacKey!)
            let originalData = try decryptor.decrypt(data: data!)
            let base64EncodedData = originalData.base64EncodedData()
            let newData = NSData(base64Encoded: base64EncodedData, options: NSData.Base64DecodingOptions.ignoreUnknownCharacters)!
            let newNSString = NSString(data: newData as Data, encoding: String.Encoding.utf8.rawValue)!
            return newNSString as String
        } catch {
            print(error)
            return ""
        }
    }
}

【讨论】:

    猜你喜欢
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 1970-01-01
    • 2017-10-01
    • 2023-04-08
    • 2019-07-09
    相关资源
    最近更新 更多