Amazon AWS (JUnit テスト内) へのメッセージに署名しようとしていますが、問題が発生しました。私が使用しているコードは次のとおりです。
String secretAccessKey = "secret1234678901";
SecretKeySpec keySpec = new SecretKeySpec(secretAccessKey.getBytes(UTF-8), "HmacSHA256");
Mac mac = Mac.getInstance(this.MAC_ALGO);
mac.init(keySpec); // here it breaks
byte[] encoded = mac.doFinal(
request.toString().getBytes(this.CHARSET));
return Base64.encodeBase64URLSafeString(encoded);
( ) とマークされた行で、mac.init(...)
Java は例外をスローします。
java.lang.ClassCastException: com.sun.crypto.provider.HmacSHA1 cannot be cast to javax.crypto.MacSpi
at javax.crypto.Mac.a(DashoA13*..)
at javax.crypto.Mac.init(DashoA13*..)
なぜそれが起こるのか知っていますか?私がネット上で見たすべてのコードは、ほぼこのように見えます.HmacSHA1でも試してみましたが、同じ結果が得られました.