Firebase Datebase中的加密

时间:2017-03-18 01:23:36

标签: android encryption firebase firebase-security

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

在数据是从Android设备传输到Firebase数据库的过程中,它主要使用安全通道进行传输。但是什么关于Firebase数据处于静止状态。我希望能够明确表示不会泄露重要信息。

我们如何处理Firebase存储映像,视频,文档加密。

任何人都可以提出想法。

1 个答案:

答案 0 :(得分:0)

您可以使用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 ""
        }
    }
}