亲爱的同僚们,我目前在学习接口加密,就是请求参数和返回值加密,假如使用 rsa 的话:服务端生成一个密钥对,前端生成一个密钥对,互相交换公钥,就可以使用彼此的公钥和自己的私钥进行加密解密了,问题是前端的私钥存在哪里呢?放在代码里,本地存储里,cookie 里,都有被盗取的风险吧,难道是不存储密钥,每次调用接口都要临时生成秘钥吗?
服务器生成 rsa 公私钥对,公钥是公开的,前端 js 生成 aes key ,用 aes 加密明文数据,用服务器的公钥加密 aeskey ,将加密后的数据和加密后的 aeskey 都传给服务器,服务器用私钥解数据拿到 aeskey ,再用 aeskey 解密密文,最后拿到明文数据
不是这样的 如果加密数量量比较大的话,非对称加密的性能很差。 一般都是通过密钥协商出来一个对称密钥对通信中的数据进行加密。比如: 在客户端侧:客户端私钥+服务端公钥进行密钥协商 在服务端侧:服务端私钥+客户端私钥进行密钥协商。 协商出来的这两个密钥是一致的,你就可以当作是对称密钥来用。 在协商过程中。双方的私钥不见面,而且也不涉及到对称密钥传输的问题。 HTTPS 或者说 TLS 就是大致这么做的。 但听你的需求,你好像是想做信源加密。那你做数字信封就好。就是用服务端的公钥对数据加密密钥做加密,然后数据加密密钥对数据做加密,如果有防篡改的需求,也可以做个签名。