conversie base64 challange
Last Updated: Feb 01 2020 18:20, Started by
George02
, Nov 27 2019 02:28
·
0
#1
Posted 27 November 2019 - 02:28
Salut,
De cateva zile ma tot chinui sa rezolv o problema si tot nu reusesc sa ii dau de cap. Enuntul este cam asa din cate am inteles eu: Gasiti un cuvant (cu o dimensiune mai mic sau egala cu 18 caractere) care inversat si convertit in baza 64 sa fie egal cu el insusi. Ce am incercat: - m-am documentat legat de modul de reprezentare a informatiilor in calculator - avem caracterele din tabelul ascii (utf-8 sa zicem) 8 biti => 1 byte - m-am documentat legat de baza64 si modul de reprezentare - avem caracterele [A-Za-z0-9+/] 6 biti - mi-am facut o pagina html care sa imi faca conversii (atasata in atasamente) Problema este luata de pe site-ul https://rough.ro/challenges Web └── First Script (20) Attached Files |
#2
Posted 27 November 2019 - 08:42
Problema este ca in ASCII exista caractere care nu le poti transimte prin URI (Uniform Resource Identifier). Cand faci un request la server ai o anumita sintaxa: tipul protoculului (http, https, ftp, file, data) :// + host (local host, adresa IP, numele site-ului) + port + cale + query + identificator de fragment):
https://en.wikipedia...fier#Definition Nu poti transmite orice caractere prin URI: https://en.wikipedia..._URI_characters Daca tu vrei sa trimiti un fisier text prin XMLHttpRequest, dar acel text are spatii, linii noi, caractere speciale - nu il poti trimite si trebuie sa il transformi in text exact cum ai face un request in URI - https://en.wikipedia...ercent-encoding Transformi tot textul intr-un alt text care nu contine spatii, carriage return, new line, etc. Un exemplu ai aici - https://en.wikipedia.org/wiki/Base64: TEXTUL IN ASCII: Man is distinguished, not only by his reason, but by this singular passion from other animals, which is a lust of the mind, that by a perseverance of delight in the continued and indefatigable generation of knowledge, exceeds the short vehemence of any carnal pleasure. TEXTUL CONVERTIT IN BASE64: TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4= Edited by PlatonX, 27 November 2019 - 08:43. |
#3
Posted 27 November 2019 - 09:30
Și cum răspunde ceea ce ai spus tu la întrebarea:
Care este cuvantul (de maxim 18 caractere) care inversat si convertit in baza 64 sa fie egal cu el insusi? |
#4
Posted 27 November 2019 - 10:05
George02, on 27 noiembrie 2019 - 02:28, said:
- m-am documentat legat de baza64 si modul de reprezentare - avem caracterele [A-Za-z0-9+/] 6 biti Edited by PlatonX, 27 November 2019 - 10:06. |
#5
Posted 27 November 2019 - 10:55
Unde este enuntul problemei? Probabil nu ai inteles bine.
Eu am inteles asa: Cuvant initial - CUVANT Cuvant inversat - TNAVUC Cuvant inversat (TNAVUC) convertit in base64 (VE5BVlVD) sa fie egal cu CUVANT? Este imposibil. Edited by Alice, 27 November 2019 - 10:55. |
#6
Posted 27 November 2019 - 11:49
RADAR
CAPAC SUPUS etc... Nu ar merge astfel de cuvinte ? Edited by keta, 27 November 2019 - 11:52. |
#7
Posted 27 November 2019 - 13:25
Conform Wikipedia, codificarea in BASE64 contine mai multe litere, 3 caractere sunt convertite in 4.
Asadar un string inversat si convertit are mai multe litere decat originaul, deci nu are cum sa fie egal. Poate-mi scapa mie ceva sau vreo situatie particulara in care se omite catracterul de paddng "=", dar solutia trebuie sa aiba in vedere acest aspect. |
#8
Posted 27 November 2019 - 13:28
ce problema stupida, ala care a compus enuntu sigur e un frustrat care nu si-a gasit locu
|
#9
Posted 27 November 2019 - 13:54
base64(reverse(text))=text?
asta se vrea? Edited by MarianG, 27 November 2019 - 13:55. |
#10
Posted 27 November 2019 - 14:09
Și eu am înțeles la fel. Dar tot e ilogic pentru că base 64 convertește fiecare 3 caractere în 4 caractere, cum a zis și maccip.
|
|
#11
Posted 27 November 2019 - 15:18
#12
Posted 27 November 2019 - 15:18
#13
Posted 27 November 2019 - 17:04
#14
Posted 27 November 2019 - 19:32
maccip, on 27 noiembrie 2019 - 15:18, said: Daca-i doar atat, solutia e "", doar ca nu e un cuvant. Cuvantul e cuvant, stringul e string in acest context din ce bag seama. Oricum, problema pare stupida. E bine cum a zis MarianG. El a înțeles. Ok hai sa reformulez: Aflați X un șir de maxim 18 caractere care inversat și transformat în baza64 este egal cu el însuși. În ce sens stupida? |
#15
Posted 27 November 2019 - 19:57
Solutia e sirul nul,
Daca gasesti tu o solutie mai putin stupida, te rog frumos s-o pui aici. |
|
#16
Posted 27 November 2019 - 20:43
btoa(q.split('').reverse().join(''))==....
textul criprat il avem |
#17
Posted 27 November 2019 - 22:36
maccip, on 27 noiembrie 2019 - 15:18, said: Daca-i doar atat, solutia e "", doar ca nu e un cuvant. Cuvantul e cuvant, stringul e string in acest context din ce bag seama. Oricum, problema pare stupida. E bine cum a zis MarianG. El a înțeles. Ok hai sa reformulez: Aflați X un șir de maxim 18 caractere care inversat și transformat în baza64 este egal cu el însuși. În ce sens stupida? |
#18
Posted 27 November 2019 - 22:52
Am zis sa filtrez putin problema dar poate nu am reusit eu sa o explic cum trebuie. Uitati, aceasta este:
<script> "use strict"; let q="";const Q=_=>btoa(q.split('').reverse().join(''))=='cXRmaWhTRFJhdGZpaFN'+ 'GMHFo'&&(flag=`${q}`);window.onkeyup=e=>Q(q=((q+e.key).slice(-0o22))); </script>Intrebarea care se pune este ce valoare ar trebui sa aiba variabila "flag" astfel incat functia Q sa intoarca true.
Edited by MarianG, 28 November 2019 - 18:38.
|
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users