Java — Цифровая подпись на Linux x64 не проверяется на Windows x32 Есть такая проблема — подписываю массив данных на ubuntu, а проверяем на windows x32.
Код подписиbyte[] encodedLicenseB = license.getEncoded();
byte[] licenseeB = license.getLicensee().trim().toUpperCase().getBytes("UTF-8");
Signature dsa = Signature.getInstance("SHA1withDSA");
dsa.initSign(getPrivateKey());
dsa.update(merge(0, encodedLicenseB, licenseeB));
byte[] signature = dsa.sign();
Код проверкиSignature dsa = Signature.getInstance("SHA1withDSA");
dsa.initVerify(getPublicKey());
byte[] licenseeB = licensee.trim().toUpperCase().getBytes("UTF-8");
dsa.update(= merge(0, encodedLicenseB, licenseeB));
return dsa.verify(signature);
dsa.verify выдаёт false.
подпись и проверка на одной машине работают. исключений нет.
Licensee — это простая строка без спец-символов.
по идее архитектура не должна влиять на подпись.
в чём может быть проблема?
Проблема может быть связана с различиями в реализации алгоритма подписи или кроссплатформенными различиями в представлении данных. Например, вы используете кодировку UTF-8 для представления данных, но разные платформы могут по-разному интерпретировать это.
Один из способов решения проблемы может быть явное указание кодировки при создании массива байтов. Попробуйте явно указать кодировку UTF-8 как параметр при преобразовании строки в массив байтов:
Проблема может быть связана с различиями в реализации алгоритма подписи или кроссплатформенными различиями в представлении данных. Например, вы используете кодировку UTF-8 для представления данных, но разные платформы могут по-разному интерпретировать это.
Один из способов решения проблемы может быть явное указание кодировки при создании массива байтов. Попробуйте явно указать кодировку UTF-8 как параметр при преобразовании строки в массив байтов:
byte[] licenseeB = licensee.trim().toUpperCase().getBytes(StandardCharsets.UTF_8);Также убедитесь, что обе платформы используют один и тот же алгоритм подписи (SHA1withDSA) и один и тот же формат ключей (например, RSA или DSA).
Если проблема не решается, рекомендуется использовать отладку для более подробного анализа данных и шагов алгоритма подписи и проверки.