2010-08-14 2 views
1

편집 : java equivalent to php's hmac-SHA1
(물론 희망, 노력 a.t.m.)GAE/J에 OAuth HMAC-SHA1 서명을 만드는 방법은 무엇입니까?

나의 이해는 내가 '기본 문자열'과 '키'를 필요로 서명을 작성하는 방법 즉. 기본 문자열을 만드는 방법을 알고 있고 Google에서 내 앱에 키로 지정한 'OAuth Consumer Secret'을 사용해야한다고 가정합니다.

하지만 서명을 얻기 위해이 두 가지를 어떻게해야합니까? GAE/Java에 HMAC 클래스가 있습니까?

OAuth Playground이 나를 위해 생성 한 것을 어딘가에 저장했다면 재생할 수 있습니까? 그것은 당신이 그것을하는 방법입니까? 아니면 OAuth 서명에 만료일이 있습니까?

는 (나는 또한 OAuth를 나에게 더 '표준'처럼 보인다. 그것은 매우 간단 보인다하더라도, failed too 전에하지만 AuthSub를 시도, 그래서 나는 OAuth를 고수하고 싶습니다.) 일부

답변

2
public String computeHmac(String baseString, String key) 
    throws NoSuchAlgorithmException, InvalidKeyException, IllegalStateException, UnsupportedEncodingException 
{ 
    Mac mac = Mac.getInstance("HmacSHA1"); 
    SecretKeySpec secret = new SecretKeySpec(key.getBytes(), mac.getAlgorithm()); 
    mac.init(secret); 
    byte[] digest = mac.doFinal(baseString.getBytes()); 
    return Base64.encode(digest); 
} 
0

을 Quercus 및 GAE에서 hmac_init 이유는 오류를 발생시킵니다. 한 가지 해결책은 위에서 언급 한 자바 메소드와 클래스를 사용하여 PHP 인스턴스로 가져 와서 compute를 호출하는 것입니다.

1)에 SCR/phpgae/HmacSHA256.java 추가) SRC/WEB-INF/서비스/com.caucho.QuercusModule 3 phpgae.HmacSHA256 라인을 추가) SCR은/phpgae 당신이 그나마 디렉토리 ID가 아직 2를 추가 당신의 GAE 응용 프로그램 : 여기 SHA256을 사용하고

package phpgae;

import java.security.InvalidKeyException; 

import java.security.NoSuchAlgorithmException; 

import javax.crypto.Mac; 

import javax.crypto.spec.SecretKeySpec; 

import com.caucho.util.Base64; 

import com.caucho.quercus.module.AbstractQuercusModule; 

public class HmacSHA256 extends AbstractQuercusModule { 

    public String compute(String baseString, String key) throws InvalidKeyException, NoSuchAlgorithmException { 
     Mac mac; 
     mac = Mac.getInstance("HmacSHA256"); 
     SecretKeySpec secret = new SecretKeySpec(key.getBytes(), mac.getAlgorithm()); 
     mac.init(secret); 
     byte[] digest = mac.doFinal(baseString.getBytes()); 
     return Base64.encode(digest); 
    } 
} 

참고. Eclipse는 모든 것을 컴파일하여 컴파일합니다. 그렇지 않으면 수동으로 클래스를 컴파일해야합니다. http://php-apps.appspot.com/

:

<?php 

import phpgae.HmacSHA256; 

$c = new HmacSHA256; 

echo $c->compute('your base string' , 'your key'); 

?> 

당신은 더 많은 실제 PHP on Google App Engine 예를 찾을 수 있습니다 여기에 PHP에

4) 당신이 할 것입니다

관련 문제