Как правильно подписать xml файл? Добрый вечер. Захотел поиграться с файлом лицензии одной программы. Подскажите, пожалуйста, как правильно подписать xml файл лицензии?
Рабочая лицензия сейчас выглядит приблизительно таким образом:
enterprise
Evaluation
2017-05-12
2017-11-20
15









SAdsad324DSafcewds5FDSf324fd


kjHBLIUJgluyiTGLYuigfklv3678GFKLH7ot6y7Ot6yo7TVBhbGF678FVGK8

Поигрался с онлайн генераторами подписей - не получилось. Выдаёт такой Exception:
System.Security.Cryptography.CryptographicException: Неверно сформированный элемент SignedInfo.
в System.Security.Cryptography.Xml.Signature.LoadXml(XmlElement value)
в System.Security.Cryptography.Xml.SignedXml.LoadXml(XmlElement value)
в BluePrism.BPCoreLib.KeyInfo.Verify(RSA key)
в BluePrism.BPCoreLib.AuthorisationDetails.FromLicenseKeys(ICollection`1 keys)
в BluePrism.BPCoreLib.clsLicensingRuntime.AddLicenseKey(KeyInfo key)
в AutomateUI.ctlSystemLicense.AddLicense()
Ок, прошёлся декомпиллером, вот что получил.internal void Verify(RSA key)
{
SignedXml signedXml = new SignedXml(this.mLicenseXml);
signedXml.Resolver = (XmlResolver) null;
XmlNodeList elementsByTagName = this.mLicenseXml.GetElementsByTagName("Signature");
if (elementsByTagName.Count != 1)
throw new ApplicationException("Verification failed: Signature count invalid.");
signedXml.LoadXml((XmlElement) elementsByTagName[0]);
if (!signedXml.CheckSignature((AsymmetricAlgorithm) key))
throw new ApplicationException("Verification failed - signature is not valid.");
}
public static AuthorisationDetails FromLicenseKeys(ICollection keys)
{
AuthorisationDetails authorisationDetails1;
if (keys == null || keys.Count == 0)
{
authorisationDetails1 = AuthorisationDetails.DefaultLicense;
}
else
{
AuthorisationDetails authorisationDetails2 = AuthorisationDetails.LoadKeys(keys);
RSACryptoServiceProvider cryptoServiceProvider = new RSACryptoServiceProvider();
cryptoServiceProvider.FromXmlString("Тут-Длинный-Длинный-КлючAQAB");
IEnumerator enumerator;
if (authorisationDetails2.LicenseType != LicenseTypes.None)
{
try
{
enumerator = authorisationDetails2.LicenseKeys.GetEnumerator();
while (enumerator.MoveNext())
enumerator.Current.Verify((RSA) cryptoServiceProvider);
}
finally
{
if (enumerator != null)
enumerator.Dispose();
}
}
authorisationDetails1 = authorisationDetails2;
}
return authorisationDetails1;
}
Собственно вопрос - зная тот самый "Длинный-Длинный-Ключ" можно ли корректно подписать исправленный XML файл? Спасибо.

21 Авг 2019 в 07:11
230 +1
1
Ответы
1

Чтобы корректно подписать XML файл лицензии, необходимо использовать правильные алгоритмы и ключи шифрования. В данном случае, для подписи XML файла используется алгоритм RSA-SHA1.

Чтобы успешно подписать файл, необходимо сгенерировать корректную подпись на основе закрытого ключа RSA. Для этого вам необходимо получить "Длинный-Длинный-Ключ" (закрытый ключ RSA), который был использован для подписи оригинального файла лицензии. Без этого ключа вы не сможете корректно подписать XML файл.

Если у вас есть доступ к закрытому ключу RSA, вы можете использовать его для генерации новой подписи на основе вашего исправленного XML файла. Обратитесь к администратору или разработчику программы, чтобы получить закрытый ключ RSA для подписи файлов лицензии.

20 Апр 2024 в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 96 157 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир