e2e-encryption - 如何获取序列化密文消息的类型?
问题描述
我根据Signal 的文档使用libsignal-protocol-java在消息传递应用程序中实现端到端加密。
假设 Alice 向 Bob 发送一个(成对的)序列化密文消息。Bob 怎么知道如何反序列化它?他不是首先需要知道密文消息的类型吗?我的理解是,成对的密文消息可以是信号消息(WHISPER_TYPE
)或预密钥信号消息(PREKEY_TYPE
)。那么 Bob 怎么知道它是哪种类型呢?
Alice 是否也应该向 Bob 发送密文消息的类型(作为明文)?
或者 Bob 有没有其他方法可以检测到类型?例如,Bob 是否应该尝试将其反序列化为信号消息,如果失败,则尝试将其反序列化为预密钥信号消息?
解决方案
在查看Signal Android的源代码后,我认为 Alice 应该也向 Bob 发送密文消息的类型(作为明文)。
在课堂上SignalServiceCipher
:
实例方法
encrypt(SignalProtocolAddress, Optional<UnidentifiedAccess>, byte[])
返回一个实例,OutgoingPushMessage
其type
属性设置为密文消息的属性,其body
属性设置为 Base64 编码的序列化密文消息。实例方法
decrypt(SignalServiceEnvelope, byte[])
从其第一个参数获取密文消息的类型,该参数是SignalServiceEnvelope的一个实例。
推荐阅读
- react-native - quickblox react-native-sdk
- android-studio - 如何在android studio中为android虚拟设备添加纬度和经度?
- odoo-14 - 如何在 odoo 14 中创建身份验证 rest api?
- firebase - 需要 Firebase 索引,但未提供链接
- node.js - Nock 无法拦截来自 httpService.get() 的请求
- reactjs - 我想在syncfusion ej2-react-schedule中单击打开弹出窗口
- audio - 在树莓派零中未检测到 USB 声卡 w
- c++ - 在函数中使用 C++ 中的预定义结构
- powershell - 从显示名称中获取 samaccountname - 但有附加功能
- postgresql - 如何使 Spark DataFrameReader jdbc 接受自定义类型的 Postgres 数组