loginRsa.ts 713 B

1234567891011121314151617181920212223
  1. import JSEncrypt from 'jsencrypt'
  2. import request from '@/utils/http'
  3. /**
  4. * Web 端登录:拉取 RSA 公钥后加密 { username, password, ts },与后端 PKCS#1 v1.5 解密一致。
  5. */
  6. export async function buildWebEncryptedLoginBody(username: string, password: string) {
  7. const { publicKeyPem } = await request.get<{ publicKeyPem: string }>({
  8. url: '/web/auth/login-rsa-public-key'
  9. })
  10. const crypt = new JSEncrypt()
  11. crypt.setPublicKey(publicKeyPem)
  12. const payload = JSON.stringify({
  13. username,
  14. password,
  15. ts: Date.now()
  16. })
  17. const encryptedLogin = crypt.encrypt(payload)
  18. if (!encryptedLogin) {
  19. throw new Error('登录加密失败,请重试')
  20. }
  21. return { encryptedLogin }
  22. }