Я пытаюсь создать цифровую подпись хеша (созданного с использованием HMACSHA256) на Java, используя алгоритм SHA256 и дополнение подписи Pkcs1 RSA, но он не создает ту же подпись, что реализована в .net поставщиком.
/>Мой код Java:
private String hmacSha256(String data, String key) throws Exception {
Mac mac = Mac.getInstance("HmacSHA256");
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "HmacSHA256");
mac.init(secretKeySpec);
byte[] hmacSha256Bytes = mac.doFinal(data.getBytes("UTF-8"));
return Base64.getEncoder().encodeToString(hmacSha256Bytes);
}
private String signHash(String hash, PrivateKey privateKey) throws Exception {
Signature signature = Signature.getInstance("SHA256withRSA", "BC");
signature.initSign(privateKey);
signature.update(Base64.getDecoder().decode(hash));
byte[] signedBytes = signature.sign();
return Base64.getEncoder().encodeToString(signedBytes);
}
private String signMessage(String hashedMsg, PrivateKey privateKey) throws Exception {
Signature signature = Signature.getInstance("SHA256withRSA", "BC");
signature.initSign(privateKey);
signature.update(hashedMsg.getBytes("UTF-8"));
byte[] signedBytes = signature.sign();
return Base64.getEncoder().encodeToString(signedBytes);
}
SignHash добавляет подпись к уже хешированному сообщению, тогда как SignMessage снова добавляет хэш к уже хешированному сообщению, а затем добавляет подпись. SignMessage создает правильную подпись в соответствии с поставщиком, но SignHash создает другую.
Реализация кода Dotnet для функции SignHash поставщиком:
RSA rSA = RSA.Create();
rSA.ImportRSAPrivateKey(array, out var _);
byte[] hash = Convert.FromBase64String(message);
byte[] inArray = rSA.SignHash(hash, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
return Convert.ToBase64String(inArray);
Подробнее здесь: https://stackoverflow.com/questions/791 ... m-pkcs1-rs
Цифровая подпись хэша (HMACSHA256) в Java с использованием алгоритма SHA256 и заполнение подписи Pkcs1 RSA не соответств ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Цифровая подпись eBay для Restful API/подпись базы подписи с заданным закрытым ключом на C#
Anonymous » » в форуме C# - 0 Ответы
- 47 Просмотры
-
Последнее сообщение Anonymous
-