@Prit,请参阅下面的代码以生成表存储的共享密钥文件作为参考。
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;
import java.util.TimeZone;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;
String secret = "<storage-account-key>";
// Date for string to sign
Calendar calendar = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss 'GMT'", Locale.US);
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
String date = sdf.format(calendar.getTime());
// canonicalizedResource, such as "/testaccount1/Tables"
String canonicalizedResource = "<Canonicalized-Resource>";
String stringToSign = date + "\n" + canonicalizedResource;
System.out.println(stringToSign);
// [email protected]%^
Mac sha256HMAC = Mac.getInstance("HmacSHA256");
SecretKeySpec secretKey = new SecretKeySpec(secret.getBytes(), "HmacSHA256");
sha256HMAC.init(secretKey);
String hash = Base64.encodeBase64String(sha256HMAC.doFinal(stringToSign.getBytes()));
System.out.println(hash);
您是否尝试使用其中一个客户端SDK?这可能会更容易,除非你的语言/环境没有一个。 – cdelmas
我正在使用REST API和Java。我认为Java SDK不支持从ARM存储表中获取数据。仅支持经典存储。 – Prit
从Classic或ARM存储帐户获取数据没有区别。您可以使用Java SDK。所有你需要的是帐户名和密钥来获取数据。试一试。 –