如果要对 HTTP 的传输过程进行加密,用 HTTPS 就可以了。
如果想对接口的数据格式进行加密,防止别人通过工具抓请求,来分析出接口的调用方法,进而伪造请求的话,就要想办法对请求参数和响应数据进行加密。比如楼上提到的网易云接口,同样的我了解到的支付宝的小程序也是可以配置接口加密的,还有一些银行金融应用,等等。
对数据加密一般用对称加密算法,这就要双方使用相同的 key 进行加解密( HTTPS 也是用的对称加密算法进行数据的加密,非对称加密算法是用来协商对称加密的 key 的),所以怎么保证 key 的安全性是加密的关键。
实际项目中,所有把 key 硬编码到客户端的做法都是不安全的,不管是前端代码还是 native 的客户端代码,只是破解难度的大小而已。
比较靠谱的办法就是参考 HTTPS 的 SSL 握手的过程,使用非对称加密算法协商加密的 key ,然后后续的数据交互中使用这个 key 进行加解密。
好消息前端项目中也是可以使用的,浏览器已经提供了相关的 API 来实现这个过程(
https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto ),GitHub 上也有开源的 library 做了上层的封装(
https://github.com/travist/jsencrypt )