Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
public class MegatronSokolServiceImpl implements MegatronSokolService {
private static final String secret;
private final AtomicLong counter;
public MegatronSokolServiceImpl(Long startValue, String secret) {
counter = new AtomicLong(startValue);
this.secret = secret;
}
@Override
public String getMegatronTestToken() {
return DigestUtils.md5Hex(DigestUtils.md5Hex(String.valueOf(counter.get())));
}
private String getMegatronToken() {
return DigestUtils.md5Hex(DigestUtils.md5Hex(String.valueOf(counter.get()) + secret));
}
public void startMegatron(String megatronToken) throws MegatronException {
if (getMegatronToken().equals(megatronToken)) {
LaserDeviceHelper.getInstance().run(LaserDeviceRequest.builder()
.setPower(LaserDeviceRequest.MAX_POWER)
.setDuration(LaserDeviceRequest.MAX_DURATION)
.build()
);
} else if (getMegatronTestToken().equals(megatronToken)) {
LaserDeviceHelper.getInstance().run(LaserDeviceRequest.builder()
.setPower(LaserDeviceRequest.MIN_POWER)
.setDuration(Duration.ofSeconds(10))
.build()
);
} else {
throw new MegatronTockenInvalidException(megatronToken);
}
counter.getAndIncrement();
PushNotificationService.getInstance().sendNewToken(getMegatronToken());
}
}
@sokolwebmaster

This comment has been minimized.

Copy link

@sokolwebmaster sokolwebmaster commented Jul 23, 2020

Андрей, md5 хеширование небезопасно.

@ooosokol

This comment has been minimized.

Copy link
Owner Author

@ooosokol ooosokol commented Jul 23, 2020

Андрей, md5 хеширование небезопасно.

Ой, да ладно. Кто будет его подбирать? Ладно, сейчас поменяю

@sokolwebmaster

This comment has been minimized.

Copy link

@sokolwebmaster sokolwebmaster commented Jul 23, 2020

md5 от md5 не решает проблему и подбирается слишком быстро на современных устройствах

@ooosokol

This comment has been minimized.

Copy link
Owner Author

@ooosokol ooosokol commented Jul 23, 2020

Спорим не подберёшь?
вот тебе токен, скажи каким числом я проинициализировал счётчик
0720be4214d6b324df334b8daf68ebae

@sokolwebmaster

This comment has been minimized.

Copy link

@sokolwebmaster sokolwebmaster commented Jul 25, 2020

Проинициализировал счетчик ты ответом на главный вопрос жизни вселенной и всего такого.

@talyguryn

This comment has been minimized.

Copy link

@talyguryn talyguryn commented Aug 12, 2020

@surebrec

This comment has been minimized.

Copy link

@surebrec surebrec commented Aug 13, 2020

PushNotificationService.getInstance().sendNewToken(getMegatronToken());
---->
PushNotificationService.getInstance().sendNewToken(getMegatronTestToken());

@xDev789

This comment has been minimized.

Copy link

@xDev789 xDev789 commented Aug 14, 2020

PushNotificationService.getInstance().sendNewToken(getMegatronToken());
---->
PushNotificationService.getInstance().sendNewToken(getMegatronTestToken());

У вас на руках есть реализация, чтобы так утверждать?

@Korshikov

This comment has been minimized.

Copy link

@Korshikov Korshikov commented Aug 23, 2020

PushNotificationService.getInstance().sendNewToken(getMegatronToken());
---->
PushNotificationService.getInstance().sendNewToken(getMegatronTestToken());

Данная строка была добавлена для того чтобы мир игры был логичным. Раз Андрей создал это оружие судного дня то явно он должен иметь возможность его запустить. Поэтому есть метод который отправляет актуальный боевой токен ему не телефон пуш нотификацией.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.