2011-10-26 5 views
0

Javascript/JQuery에 대한 PHP 통합 예제를 이식하려고합니다. PHP에서 암호화 된 문자열은 다음 코드를 사용하여 만들어집니다 :PHP/Javascript/JQuery - base64 sha256 인코딩

그 기능 여기에 설명되어 있습니다
$sig = base64_encode(hash_hmac('sha256', $sign, $this->secretAccessKey, true) 

: 자바 스크립트에서 http://us.php.net/base64_encode

http://php.net/manual/en/function.hash-hmac.php

, 나는에 jQuery의 암호화를 사용하고 있습니다 HMAC 조각을하십시오 :

http://code.google.com/p/crypto-js/#HMAC-SHA256 

그리고 base64 인코딩을해야하는지 알아 내려고하고 있습니다. 이미 base64에있는 것처럼 보입니다. 현재 실행중인 코드 :

var sigHash = Crypto.HMAC(Crypto.SHA256, sign, accessKey); 

이 내용이 정확합니까? 위의 PHP 함수에 상응하는 javascript/jquery를 어떻게 만들 수 있습니까?

답변

2

HMAC는 표준입니다. SHA-256도 그렇습니다. 그래서 그 출력은 구현에 관계없이 과 같아야합니다.

Base64 인코딩에만 차이가있을 수 있습니다. 일반적으로 영숫자가 아닌 문자는 +/이지만 그 수는 신뢰할 수 없습니다. 나는 검사했고 두 가지 구현 모두 영숫자가 아닌 문자를 사용합니다.

그러나 수천 개의 문자열을 "수동으로"검사해야합니다. PHP에서의 구현은 잘 테스트됩니다.

Crypto.util.bytesToBase64(
    Crypto.HMAC(Crypto.SHA256, sign, accessKey, { asBytes: true }) 
); 
+0

고마워요 - 내가 알고 있어야 할 것 같아요. 자바 스크립트에서 암호 함수를 실행하여 PHP 함수와 동등한 것으로 충분하거나 암호 함수를 실행해야하고 추가로 base64_encode 함수를 사용해야합니다. – mheavers

+0

이 함수의 표준 출력은 Base64가 아닌 16 진수 인코딩입니다. Base64 인코딩의 경우 업데이트 된 답변을 참조하십시오. – Dennis

+0

감사! 도움이됩니다. – mheavers

1

혹시 PHP 함수의 JS 구현에 영감을해야하는 경우 : 같은 jQuery를의 구현에 해당하는 경우하지만 Base64로 인코딩 된 출력의 구문은 ...

을 모르는 , PHPJS.org를 살펴보십시오. base64_encode에 해당하는 JavaScript는 base64_encode에서 찾을 수 있습니다.

+0

감사합니다. 도움이됩니다. – mheavers