Здравствуйте! Нужна ваша помощь в решении одной задачки.
Есть три переменные:
$a = 16431130;
$b = 15318085;
$c = 8860504;
$result = $a ^ $b ^ c;
В конце известно 2 значения, переменная $result и переменная $c. Скажите, как из этих 2 переменных получить переменные $a и $b. Как лучше изменить
$result = $a ^ $b ^ c;
чтобы получить нужный результат?
Судя по всему вы хотите взломать Шифр Вернама. Он используется военными для передачи сверх секретной информации и без знания ключа его не взломать. Если получится - напишите сюда - вы привнесете неоценимый вклад в криптографию. В вашем случае можно лишь получить результат $a ^ $b вот так:
function myXor($c,$result){
return $result^$c;
}
Как лучше изменить...
Можно хранить a и b в разных битах.
$result = ($a << 32 | $b) ^ $c;
Вот код:
$a = 12345;
$b = 65432;
$c = 723648723;
$res = ($a << 32 | $b) ^ $c;
$ab = $res ^ $c;
$b = ($res ^ $c) % (1 << 32) | 0;
$a = ($res ^ $c) / (1 << 32) | 0;
var_dump([$a, $b]);
Результат:
array(2) {
[0]=>
int(12345)
[1]=>
int(65432)
}
К сожалению, при недостаточно большом $c
значение $a
будет представлено в открытом виде. Необходимо выбирать $c
, как случайное 64битное число. $a
и $b
в свою очередь, ограничены 32битным диапазоном.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Доброго времени суток! Мне необходимо загрузить аудиофайл (wav) в документы ВКонтакте
Обновил сервер и теперь код обернутый в <? ?> перестал выполнятьсяКак подправить?
В силу логики проекта, мне нужно дать пользователям возможность работать с файлами в одной конкретной папке на сервере(создавать, изменять,...
Не работает переопределенный onClick() (заходит в if, вызывает click(), но ничего не происходит) в браузере Chrome версии 56: