通过PHP(Laravel)、Android和iOS进行加密和解密的跨平台数据传输


Cross platform data transfer with encrypting and decripting over PHP (Laravel), Android and iOS

我正在尝试为跨平台(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,除非精通加密用法,否则滚动自己的加密方法通常会导致不安全的方案。