You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript加密密码并在Java后端解密实现登录

登录系统:前端JS加密+Java后端解密实现方案

前端实现(HTML + JavaScript)

使用CryptoJS实现客户端密码加密,代码如下:

<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Login</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js"></script>

<h1>Login</h1>
<form id="loginForm">
    <label for="username">Username:</label>
    <input type="text" id="username" name="username" required>
    <br><br>
    <label for="password">Password:</label>
    <input type="password" id="password" name="password" required>
    <br><br>
    <button type="button" id="submitButton">Submit</button>
</form>

<script>
    document.getElementById("submitButton").addEventListener("click", function () {
        const username = document.getElementById("username").value;
        const password = document.getElementById("password").value;

        if (!username || !password) {
            alert("请填写所有字段!");
            return;
        }

        // 加密密钥,需与后端保持一致
        const secretKey = "mySecretKey12345";

        // 使用CryptoJS AES加密密码
        const encryptedPassword = CryptoJS.AES.encrypt(password, secretKey).toString();

        // 发送加密后的账号密码到后端
        fetch("http://localhost:8080/login", {
            method: "POST",
            headers: {
                "Content-Type": "application/json"
            },
            body: JSON.stringify({
                username: username,
                password: encryptedPassword
            })
        })
        .then(response => response.json())
        .then(data => {
            if (data.success) {
                alert("登录成功!");
            } else {
                alert("凭证无效!");
            }
        })
        .catch(error => {
            console.error("错误:", error);
            alert("发生错误,请重试。");
        });
    });
</script>

后端实现(Java)

使用javax.crypto包实现密码解密,代码如下:

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;

public class LoginController {

    public String decrypt(String encryptedPassword, String secretKey) throws Exception {
        byte[] keyBytes = secretKey.getBytes("UTF-8");
        SecretKeySpec secretKeySpec = new SecretKeySpec(keyBytes, "AES");

        Cipher cipher = Cipher.getInstance("AES");
        cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);

        byte[] decodedPassword = Base64.getDecoder().decode(encryptedPassword);
        byte[] decryptedPasswordBytes = cipher.doFinal(decodedPassword);

        return new String(decryptedPasswordBytes, "UTF-8");
    }
}

内容的提问来源于stack exchange,提问作者Shah Harsh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 23:18:26