0

我使用适用于 PHP 的 AWS 开发工具包不断收到签名错误,但只有在将加密数据插入 SimpleDb 时才会发生这种情况。例如,如果我注释掉 $userkey = "test",则会出现错误,但如果我将其保留,则不会出现错误。

    <?php
    require_once 'vendor/autoload.php';
    use Aws\Common\Aws;
    $client = Aws::factory('_loginconfig.php')->get('SimpleDb');
    $domainName = "MY_USERS_001";
    $uniqueid = uniqid();
    $userkey = mcrypt_create_iv(16, MCRYPT_DEV_URANDOM);
    //$userkey = "test";
    $name = "Bob Smith";
    try {
      $client->putAttributes(array(
        'DomainName' => $domainName,
        'ItemName'   => $uniqueid,
        'Attributes' => array(
          array('Name' => 'USER_KEY', 'Value' => $userkey, 'Replace' => true),
          array('Name' => 'USER_REALNAME', 'Value' => $name, 'Replace' => true),
        ),
      ));
    }
    catch (Aws\SimpleDb\Exception\SimpleDbException $error) {
      echo $error;
      exit;
    }
    ?>

我对加密、哈希、签名一无所知,所以请原谅我对此一无所知。

4

1 回答 1

0

在研究了这个问题之后,我决定使用的解决方案是在我发送请求之前使用 base64_encode($userkey)。

我不知道为什么我会收到签名错误,但这解决了这个问题。

于 2013-03-15T18:12:06.943 回答