Ajax 포스팅을 할 때 일반 텍스트를 전송하고 싶지 않기 때문에 js를 사용하여 js 객체를 문자열이나 바이너리 문자열로 암호화하여 전송하고 싶은데 어떻게 암호화해야 할지 모르겠고, 암호화된 문자열은 PHP 측에서 해독이 필요합니다. 해독 후에 PHP 배열을 갖는 것이 가장 좋습니다. 이것을 달성하는 방법을 알고 있습니까?
Ajax 포스팅을 할 때 일반 텍스트를 전송하고 싶지 않기 때문에 js를 사용하여 js 객체를 문자열이나 바이너리 문자열로 암호화하여 전송하고 싶은데 어떻게 암호화해야 할지 모르겠고, 암호화된 문자열은 PHP 측에서 해독이 필요합니다. 해독 후에 PHP 배열을 갖는 것이 가장 좋습니다. 이것을 달성하는 방법을 알고 있습니까?
우선, crypto-js가 문제를 해결할 수 있습니다. 대칭 암호화 알고리즘(예: AES-256-CBC)을 선택하고 AES + 비밀번호를 사용하여 PHP 측에서 암호화하고 AES + 비밀번호를 사용하여 js 측에서 암호를 해독합니다. 그러나 이는 비밀번호가 이미 설정되어 있기 때문에 의미가 없습니다. js 코드에서 일반 텍스트로 표현됩니다.
따라서 텍스트를 전송하지 않는 것이 목적이라면 전송 계층에서 비대칭 암호화를 구현하는 것이 좋습니다. 가장 간단한 방법은 서버 프로토콜을 HTTP에서 HTTPS로 변경하는 것입니다.
비대칭 암호화 알고리즘을 사용하여 브라우저에서 공개 키로 암호화하고 서버 측에서 개인 키로 복호화할 수 있습니다. jsencrypt 프로젝트는 RSA 암호화를 지원합니다. openssl
을 사용하여 키 쌍을 생성한 다음 공개 키를 페이지에 입력하면 됩니다. PHP는 openssl 일련의 함수를 사용하여 암호를 해독할 수 있습니다.
암호화된 데이터와 복호화된 데이터는 모두 문자열입니다. 배열을 얻으려면 JS에서 객체를 만든 다음 JSON.stringify
을 조정한 다음 암호화하면 됩니다. PHP가 디코딩하는 것은 JSON 문자열이며, json_decode 함수를 사용하여 이를 디코딩하여 배열을 얻을 수 있습니다.