JavaScript와 PHP는 웹 개발에서 일반적으로 사용되는 두 가지 프로그래밍 언어입니다. 일부 응용 프로그램에서, 특히 민감한 데이터가 관련 될 때 데이터 전송 중 보안을 보장하는 것이 특히 중요해집니다. 이 기사는 JavaScript와 PHP를 통해 AES 대칭 암호화 알고리즘 사이의 안전한 암호화 된 통신을 달성하는 방법을 보여줍니다.
암호화 된 통신의 기본 원칙은 암호화 알고리즘을 통해 데이터를 암호화하여 전송 중에 제 3자가 데이터를 도난 당하거나 변조하지 않도록하는 것입니다. 이 기사에서는 대칭 암호화 알고리즘 AE (고급 암호화 표준), 즉 데이터 암호화 및 암호 해독이 동일한 키와 함께 사용됩니다.
이 프로세스에서 JavaScript는 임의 키를 생성하여 PHP 서버로 전송하는 책임이 있습니다. PHP 측은이 키를 사용하여 데이터를 암호화하여 JavaScript로 다시 전송합니다. 마지막으로 JavaScript는 동일한 키를 사용하여 데이터를 해독하고 원래 데이터를 복원합니다.
먼저 JavaScript의 Cryptojs 라이브러리를 사용하여 암호화 및 암호 해독 작업에 대한 임의의 키를 생성하십시오. 16 바이트 랜덤 키는 다음 코드로 생성 할 수 있습니다.
var key = CryptoJS.lib.WordArray.random(16);
이 코드는 cryptojs 라이브러리를 통해 임의의 16 바이트 키를 생성합니다. 키 길이는 필요에 따라 조정할 수 있습니다.
키를 생성 한 후에는 안전한 방식으로 PHP 서버로 보내야합니다. 키는 AJAX 요청을 통해 처리하기 위해 PHP 파일로 전송 될 수 있습니다.
var xhr = new XMLHttpRequest();
xhr.open("POST", "send_key.php", true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
console.log("Key sent successfully to PHP");
}
};
xhr.send("key=" + key);
위의 코드는 사후 요청에서 키를 PHP로 보내며 키를 수신 한 후 데이터를 암호화하는 데 사용됩니다.
JavaScript에서 데이터는 AES 알고리즘을 사용하여 암호화되며 암호화 결과는 후속 처리를 위해 PHP로 전송됩니다.
var dataToEncrypt = "Hello, World!";
var encryptedData = CryptoJS.AES.encrypt(dataToEncrypt, key).toString();
이 코드는 "Hello, World!"문자열을 암호화합니다. 키를 사용하면 암호화 된 데이터가 변수 암호화 데이터에 저장됩니다.
PHP에서는 OpenSSL Extension이 제공하는 AES 암호 해독 방법을 사용하여 암호화 된 데이터를 해독합니다.
$encryptedData = $_POST['encryptedData'];
$decryptedData = openssl_decrypt($encryptedData, 'AES-128-ECB', $key);
이 코드는 게시물 요청에서 암호화 된 데이터를 가져오고 키를 사용하여 해독 된 데이터를 얻습니다.
이 기사는 JavaScript와 PHP를 통해 AES 대칭 암호화 알고리즘 사이의 안전한 데이터 암호화 통신을 달성하는 방법을 보여줍니다. 키를 생성, 키 전송, 데이터를 암호화 및 해독하는 단계를 통해 데이터의 보안을 보장 할 수 있습니다. 실제 응용 분야에서 열쇠 보호 및 암호화 프로세스의 효과를 보장하기 위해 전송 프로세스의 보안을 더욱 향상시켜야한다는 점에 유의해야합니다.
이 기사의 예제를 통해 JavaScript와 PHP 간의 암호화 된 커뮤니케이션을 이해하고 구현하여 웹 응용 프로그램의 보안을 향상시킬 수 있어야합니다.