我正在尝试为跨平台(web、android和iOS)创建一个安全的消息传输系统。
所以,我希望所有API数据传输都应该通过加密和解密来完成。
因此,如果应用程序(android和iOS)想要发送消息,则应该对其进行加密,并通过PHP解密数据;如果服务器想要向应用程序发送JSON,则应该加密该JSON,当收到该消息时,应用程序将对其进行解密并使用该消息。
例如,我们可能会收到来自服务器的JSON响应,比如
{
"widget": "not-available",
"debug": "on",
"window": "open",
"image": "example.widget.com/anything.jpg"
}
应该由这样的服务器发送-
{
"widget": "@dsdjk4$kjh6&",
"debug": "#r$gHYUJ%",
"window": "#jkhG%jHG%jb*kJH",
"image": "JH4fgdt5%(0jjlkh)nl,k&&"
}
该应用程序将在解密后将其转换为
{
"widget": "not-available",
"debug": "on",
"window": "open",
"image": "example.widget.com/anything.jpg"
}
有什么常用的方法吗?
如果是,请告诉我。我不需要完整的代码(如果提供任何示例,会更有帮助),但请告诉我在哪里可以找到解决方案。
如果您只需要在传输过程中加密数据,请使用https。固定证书以避免MITM攻击。在服务器端使用TLS 1.2和转发安全性。
基本上,https使用对称算法(如AES)和随机密钥对数据进行加密,并且使用非对称算法(例如RSA)结合服务器证书对密钥进行加密。
如果出于某种原因不符合您的要求,请考虑使用RNCryptor,除非精通加密用法,否则滚动自己的加密方法通常会导致不安全的方案。