Как создать доступ / секретный ключ в стиле S3 с помощью Java - PullRequest
1 голос
/ 23 июля 2011

Я пытаюсь сгенерировать ключи доступа и секретные ключи так же, как S3, используя java, но у меня возникли некоторые проблемы.

В качестве отправной точки я смотрю на этот пример оживленного замка , у меня есть этот код и работает, но я не уверен в двух вещах 1) как настроить его так, чтобы использовать тот же ключ генерации, что и s3, который использует HMAC-SHA1, как указано здесь и 2) как вывести дружественные строки открытого / закрытого ключа для пользователя.

Возможно, вы догадались, что я новичок в java-шифровании и библиотеках надувных замков, однако я нашел JCEKeyGenerator.HMACSHA1 в документации bc, но не могу найти пример его использования. Любая помощь будет принята с благодарностью.

Спасибо.

1 Ответ

3 голосов
/ 23 июля 2011

Вам нужно будет использовать javax.crypto.KeyGenerator для создания AWSAccessKeyId и AWSSecretAccessKey:

javax.crypto.KeyGenerator generator = javax.crypto.KeyGenerator.getInstance("HMACSHA1");
generator.init(120);
byte[] awsAccessKeyId = generator.generateKey().getEncoded();
generator.init(240);
byte[] awsSecretAccessKey = generator.generateKey().getEncoded();

Затем вам нужно будет base64 кодировать байты (для этого используется MimeUtility из mail.jar):

final ByteArrayOutputStream encoded = new ByteArrayOutputStream();
final OutputStream encoder = javax.mail.internet.MimeUtility.encode(encoded, "base64");
encoder.write(awsAccessKeyId);
encoder.flush();
encoder.close();
String accessKeyId = new String(encoded.toByteArray(), encoding).replaceAll("[\\r\\n]", "");
...