0

我正在使用这里的确切代码:http:
//docs.amazonwebservices.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/AuthJavaSampleHMACSignature.html

为我的应用程序生成签名。但是,Eclipse中无法识别一行代码

result = Encoding.EncodeBase64(rawHmac);

Eclipse 说它不识别“编码”类。这是确切的错误:

方法 EncodeBase64(byte[]) 未定义类型 Encoding

我尝试导入以下 3 件事:

javax.sound.sampled.AudioFormat.Encoding;
org.apache.commons.codec.binary.Base64;
org.omg.IOP.Encoding;

然而,所有这三个然后告诉我他们不承认'EncodeBase64'功能。有人知道我应该对上面链接的代码使用什么导入吗?

4

3 回答 3

2

请注意,没有一个熟练的 Java 开发人员会使用大写字母作为方法的开头,因此如果您没有打错字,则不能指望Encoding.EncodeBase64在任何标准库中都能找到。您最好使用另一个 Base 64 编码器/解码器,例如在Apache Commons Codec中找到的那个——它似乎对我来说是最好的 API。

于 2012-10-03T18:10:54.437 回答
2

标准 Java中有 Base64 编码/解码支持:javax.xml.bind.DataTypeConverter。那将是一个零开销的选择。

于 2012-10-02T21:10:47.803 回答
0

另一种编码你的解决方案rawHmac是这个:

String result = new String(encode(rawHmac));

使用此编码功能:

  private static char[] encode(byte[] bytes) {
    final int amount = bytes.length;
    char[] result = new char[2 * amount];

    int j = 0;
    for (int i = 0; i < amount; i++) {
      result[j++] = HEX[(0xF0 & bytes[i]) >>> 4];
      result[j++] = HEX[(0x0F & bytes[i])];
    }

    return result;
  }

  private static final char[] HEX = {
    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'
  };
于 2014-08-19T18:48:23.377 回答