Шифрование и расшифровка паролей между браузером и серверной частью Spring MVCJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Шифрование и расшифровка паролей между браузером и серверной частью Spring MVC

Сообщение Anonymous »

Я хочу безопасно передавать и обрабатывать пароли пользователей между браузером и серверной частью Spring MVC. Пароль шифруется на стороне клиента и расшифровывается на стороне сервера перед проверкой.
Код интерфейса:

Код: Выделить всё



function encryptPassword(password) {
const encryptedPassword = CryptoJS.AES.encrypt(password, "SecretKey123").toString();
return encryptedPassword;
}

document.getElementById("loginForm").onsubmit = function (e) {
e.preventDefault();
const passwordField = document.getElementById("password");
passwordField.value = encryptPassword(passwordField.value);
this.submit();
};





Login

Верхний код:

Код: Выделить всё

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

@Controller
@RequestMapping("/login")
public class LoginController {
private static final String SECRET_KEY = "SecretKey123"; // Must be 16 chars for AES

@PostMapping
public String login(@RequestParam String username, @RequestParam String password, Model model) {
try {
String decryptedPassword = decrypt(password);
// Validate username and decryptedPassword
// Perform authentication logic
} catch (Exception e) {
model.addAttribute("error", "Invalid encryption");
return "login";
}
return "home";
}

private String decrypt(String encryptedPassword) throws Exception {
SecretKeySpec secretKey = new SecretKeySpec(SECRET_KEY.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, secretKey);
byte[] decodedBytes = Base64.getDecoder().decode(encryptedPassword);
byte[] original = cipher.doFinal(decodedBytes);
return new String(original);
}
}
Я не уверен, безопасна ли моя реализация или существуют ли более эффективные методы шифрования и дешифрования в этом случае использования.


Подробнее здесь: https://stackoverflow.com/questions/793 ... vc-backend
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»