2011-04-20 5 views
3

기본적으로 로그인 정보를 전달하는 아약스 양식이 있는데, 아약스로 전송하기 전에 비밀번호를 암호화 한 다음 PHP에서 해독 할 수있는 방법이 있습니까?자바 스크립트 및 PHP 암호화/암호 해독

또는 다른 방법으로 살펴 봐야하나요?

많은 감사합니다 :) 내가 PHP와 자바 스크립트에서 그것의 구현을 프로그래머 알고 있기 때문에

답변

4

JavaScript 또는 PHP에서 암호화를 수행 할 이유가 없으므로 은 SSL (HTTPS)을 사용하는 것이 좋습니다. 요즘에는 모든 브라우저에서 신뢰할 수있는 인증서를 얻을 수 있으므로 for free이므로 SSL을 사용하지 않아도됩니다.

어떤 이유로 SSL을 사용할 수없는 경우 RSA의 JavaScript 구현을 사용하여 로컬에서 암호화 할 수 있지만 서버에서만 다시 해독 할 수 있습니다.

+0

훌륭한 자료입니다. 감사. – Joshwaa

2

당신은, RC4를 사용할 수 있습니다. 그러나 어떤 종류의 암호화를 사용하는 경우에도 키 클라이언트 측을 그대로 두어 암호화 할 수 있으므로 페이지에 액세스 할 수있는 모든 사람이 키를 가져와 해독 할 수 있습니다 (따라서 포인트를 무효화 할 수 있음).

클라이언트 측에서 해시하거나 (암호를 알 필요가없는 경우 PHP에서 해시와 일치 시키거나) RSA와 같은 공개 - 개인 키 암호화를 사용하는 것이 더 좋을 수 있습니다. 클라이언트는 암호화 할 수는 있지만 해독 할 수는 없습니다.

해시의 경우 hash()sha1 for Javascript을 확인하십시오.

그리고 RSA에 대한

이 블로그 게시물 http://www.sematopia.com/2008/10/rsa-encrypting-in-javascript-and-decrypting-in-php/

+0

감사합니다. – Joshwaa

0

당신은 안전하게 할 수 없습니다. https를 사용해야합니다

0

md5(password)을 JS와 PHP에서 모두 수행 한 다음 암호화 된 암호를 비교할 수 있습니다.

사용자 이름이 암호화되지 않았으므로 PHP의 DB에서 암호를 가져 와서 암호화 할 수 있습니다.

그렇게하는

가장 좋은 방법은 다음과 같습니다

  • 가하는 uniqid을 생성 $_SESSION['crypt_key']에 저장하고, 아약스 양식에 숨겨진 입력으로 보내;
  • 은 보내기 전에 JS를 md5(crypt_key + password)을 사용하여 암호화합니다.
  • md5($_SESSION['crypt_key'] . $password)을 사용하여 PHP로 암호화하고 비교하십시오. 이렇게하면 모든 요청이 암호화되지 않은 암호를 전송하게됩니다.