По какой-то причине hmac_init на Quercus и GAE выдает ошибки. Одним из решений является использование вышеупомянутого java-метода и класса, импорт его в экземпляр PHP и вызов вычисления.
1) Добавьте идентификатор каталога scr / phpgae, которого у вас еще нет
2) Добавьте строку phpgae.HmacSHA256 в src / WEB-INF / services / com.caucho.QuercusModule
3) Добавьте scr / phpgae / HmacSHA256.java в ваше приложение GAE:
package phpgae;</p>
<pre><code>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);
}
}
Обратите внимание, я использую SHA256 здесь. Eclipse компилирует все на лету, иначе вам нужно скомпилировать класс вручную.
4) Вот что вы делаете на PHP:
</p>
<pre><code><?php
import phpgae.HmacSHA256;
$c = new HmacSHA256;
echo $c->compute( 'your base string' , 'your key' );
?>
Вы можете найти более практичный PHP на Google App Engine примеры из: http://php -apps.appspot.com /