У меня есть launcher.jar . И данный лаучнер сверяет хэш-и, и если они не совпадают, он заново перекачивает файлы, но я не хочу, чтобы он сверял хэш-и. Как обойти это? Вот код (декомпилированный). У меня же просто не получится взять java (декомпилированный) код, отредактировать его, а потом скомплировать?
package launcher.hasher;
import java.io.IOException;
import java.nio.file.Path;
import java.util.Arrays;
import launcher.LauncherAPI;
import launcher.helper.IOHelper;
import launcher.helper.SecurityHelper;
import launcher.helper.SecurityHelper.DigestAlgorithm;
import launcher.helper.VerifyHelper;
import launcher.serialize.HInput;
import launcher.serialize.HOutput;
public final class HashedFile extends HashedEntry
{
public static final SecurityHelper.DigestAlgorithm DIGEST_ALGO = SecurityHelper.DigestAlgorithm.MD5;
@LauncherAPI
public final long size;
private final byte[] digest;
@LauncherAPI
public HashedFile(long size, byte[] digest)
{
this.size = VerifyHelper.verifyLong(size, VerifyHelper.L_NOT_NEGATIVE, "Illegal size: " + size);
this.digest = (digest == null ? null : (byte[])DIGEST_ALGO.verify(digest).clone());
}
@LauncherAPI
public HashedFile(Path file, long size, boolean digest) throws IOException {
this(size, digest ? SecurityHelper.digest(DIGEST_ALGO, file) : null);
}
@LauncherAPI
public HashedFile(HInput input) throws IOException {
this(input.readVarLong(), input.readBoolean() ? input.readByteArray(-DIGEST_ALGObytes) : null);
}
public HashedEntry.Type getType()
{
return HashedEntry.Type.FILE;
}
public long size()
{
return size;
}
public void write(HOutput output) throws IOException
{
output.writeVarLong(size);
output.writeBoolean(digest != null);
if (digest != null) {
output.writeByteArray(digest, -DIGEST_ALGObytes);
}
}
@LauncherAPI
public boolean isSame(HashedFile o) {
return (size == size) && ((digest == null) || (digest == null) || (Arrays.equals(digest, digest)));
}
@LauncherAPI
public boolean isSame(Path file, boolean digest) throws IOException {
if (size != IOHelper.readAttributes(file).size()) {
return false;
}
if ((!digest) || (this.digest == null)) {
return true;
}
byte[] actualDigest = SecurityHelper.digest(DIGEST_ALGO, file);
return Arrays.equals(this.digest, actualDigest);
}
@LauncherAPI
public boolean isSameDigest(byte[] digest) {
return (this.digest == null) || (digest == null) || (Arrays.equals(this.digest, digest));
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Написал простой тест (первый в моей жизни), в результате запуска падает с ошибками
В приложении использую Picasso для загрузки картинок с интернетаПримерно так