Я пробовал много для создания подписи для доступа к одной веб-службе.Подпись с HMAC SHA-256 и Base64Encoder
Им требовалось создать подпись с каждым запросом.
Для создания подписи у меня есть одно сообщение: «abc» и один секретный ключ говорят «xyz». Согласно им моей подписи должна быть обработана в виде следующего кода рубинового
require 'base64'
require 'openssl'
secret = "xyz"
request = "abc"
digest = OpenSSL::Digest::Digest.new('sha256')
signature = Base64.encode64(OpenSSL::HMAC.digest(digest, secret, request)).chomp
signature
должен быть 9ZjsfVB3k5nPNLf5he+gfyYaxNWCIJ6J8YcRpxW5GG0=
, но я не получаю это с помощью Java кода, который, как показано ниже:
SecretKey secretKey = null;
byte[] keyBytes = keyString.getBytes("UTF-8");
Mac mac = Mac.getInstance("HMACHSA256");
secretKey = new SecretKeySpec(keyBytes,mac.getAlgorithm());
mac.init(secretKey);
byte[] text = baseString.getBytes("UTF-8");
//mac.update(digest.digest());
byte[] encodedText = mac.doFinal(text);
return new String(Base64.encodeBase64(encodedText)).trim();
Пожалуйста, помогите мне в этом ,
есть * "HMACHSA256" * опечатка? Это фактический код запуска, который вы вставили? Разве эта строка не должна быть для начала «* HMACSHA256» *? – TacticalCoder
да, это мой код запуска, и я получаю подпись, но ее неправильная подпись. – user1141515
@ user1141515: Прикольно, вы должны получить «NoSuchAlgorithmException» - я также думаю, что вы хотели набрать «HMACSHA256» выше. –