|
Из строчек A и B получить C, чтобы по C и B потом восстановить A.
|
|||
---|---|---|---|
#18+
Например есть две строчки вида: Код: vbnet 1. 2. 3. 4. 5.
(понятно, что hex) Надо придумать как из A и B получить C (например такого же вида), чтоб я зная B и C мог легко и однозначно восстановить A. Код: vbnet 1.
Ну, т.е. какую-то суперзащиту я на этом строить не хочу, скорее чуть подстраховаться от совсем уж явного обмана. A и B -это ID компьютера полученные разными способами. A -как было, B-как будет. Например клиент говорит: у меня был A, а стал B. Я ему говорю - а запусти ка вот это и скажи мне C. (т.е. программа по прежнему знает A, но не теперь показывает пользователю B). Проверяю равен ли A тому что у него был, и если да, то соглашаюсь с пользователем. Подскажите идею. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2014, 22:55 |
|
Из строчек A и B получить C, чтобы по C и B потом восстановить A.
|
|||
---|---|---|---|
#18+
1) разбей на две части, переведи в Long и используй обычную операцию сложения-вычитания 2) побитовая операция "исключающее ИЛИ" (XOR) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2014, 23:03 |
|
Из строчек A и B получить C, чтобы по C и B потом восстановить A.
|
|||
---|---|---|---|
#18+
Shocker.Pro, а не напишешь как это сделать (ток не посылай в FAQ). Чет я не силен ни в шестнадцатиричных, ни в переводах, ни в XOR-ах, а студентом был очень давно...чтоб такие вещи с ходу делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2014, 23:15 |
|
Из строчек A и B получить C, чтобы по C и B потом восстановить A.
|
|||
---|---|---|---|
#18+
Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8.
соответственно можешь просто посимвольно поксорить две строки ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2014, 23:26 |
|
Из строчек A и B получить C, чтобы по C и B потом восстановить A.
|
|||
---|---|---|---|
#18+
можно еще ксорить поверх этого неким своим "тайным" ключом, чтобы никто не догадался ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2014, 23:27 |
|
Из строчек A и B получить C, чтобы по C и B потом восстановить A.
|
|||
---|---|---|---|
#18+
Неоптимально, но вроде работает Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2014, 23:38 |
|
Из строчек A и B получить C, чтобы по C и B потом восстановить A.
|
|||
---|---|---|---|
#18+
Казанский, спасибо, идею понял, но идея Shocker.Pro понравилась больше. Каждая пара символов кодирует число 0-255 Через Xor от a и b всегда можно однозначно получить c, и наоборот зная c и b -получить a У меня одна и та же ф-ция работает в обе стороны. А в промежутке накручиваем n-ное число "тайных" хексов и уже черта с два угадаешь. А назад раскручиваем в обратном порядке. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36.
Shoker, спасибо. Я правильно осознал твою идею? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2014, 05:34 |
|
Из строчек A и B получить C, чтобы по C и B потом восстановить A.
|
|||
---|---|---|---|
#18+
Дмитрий77Я правильно осознал твою идею?ну да, фактически ты объединил две идеи в одну, хотя я как раз предполагал что-то ближе к варианту Казанского. Дмитрий77А назад раскручиваем в обратном порядке.по идее порядок значения не имеет. То есть поксорив тремя разными "тайными" ключами ты можешь получить исходный результат, поксорив этими же ключами в произвольном порядке. Таким образом иметь три тайных ключа нет смысла (если они берутся из одного места), потому что это будет эквивалентно одному ключу, который является результатом ксора их между собой ) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2014, 08:57 |
|
Из строчек A и B получить C, чтобы по C и B потом восстановить A.
|
|||
---|---|---|---|
#18+
Shocker.Pro, Ну, на самом деле дурью страдаю. Если охота, можешь почитать "подробности". Неоднозначность "ID компьютера" при нормальном запуске и "Run As Admin". Понять бы хоть.. Вероятность того что это вообще пригодится, ничтожно мала. Т.е. во первых, лицензия выданная старому юзеру под ID (A), даже если после обновления покажет другой ID (B), будет продолжать работать если ID(A) не изменился. Во вторых на большинстве современных систем ID(A)=ID(B). А ID(A) может меняться только на компе типа моего ноута при смене режима user/admin, и это редкость. Т.е. чтоб такую фигню высечь (чтоб лицензия перестала работать), надо на компе "типа" моего ноута активироваться старой версией под суперадмином, работать под суперадмином, а на новой версии вдруг решить что теперь надо работать под юзером. Это при том что прога под юзером прекрасно работает. Хотя вот с другой прогой, которую планирую "откреплять от требования админа" скорее всего эти проблемы у кого-то будут, т.к. там по определению все ключи активировались "под админом". Перестраховался, перешел на новые версии защиты, теперь перестраховываю себя от "вдруг действующая лицензия у кого-то слетит". ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2014, 09:48 |
|
|
start [/forum/topic.php?fid=60&fpage=45&tid=2156443]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 272ms |
total: | 400ms |
0 / 0 |