前端能用非对称加密直接加密用户密码吗?
我在做一个登录功能,想在前端用非对称加密把用户密码加密后再传给后端。但查资料发现大部分都说前端不适合做加密,可我不太理解为什么——既然有 RSA 这种算法,为啥不能直接用呢?
我试过用 crypto.subtle 生成密钥对,但公钥怎么安全地给前端用?如果公钥是写死在代码里的,那不就等于没加密吗?而且每次刷新页面密钥都会变,根本没法和后端配合。
比如这段代码:
const keyPair = await crypto.subtle.generateKey(
{ name: 'RSA-OAEP', modulusLength: 2048, publicExponent: new Uint8Array([1, 0, 1]), hash: 'SHA-256' },
true,
['encrypt', 'decrypt']
);
这样生成的公钥根本没法复用,后端也没法解密。到底该怎么做才对?
暂无解答