- log69 blogja
- A hozzászóláshoz be kell jelentkezni
- 676 megtekintés
Hozzászólások
Miért ne lenne jó a harmadik url-be? Egyrészt enkódolható, másrészt ha jól tudom csak query stringben bír speciáls jelentéssel a plusz jel, az url többi részében nem.
- A hozzászóláshoz be kell jelentkezni
Az kódolás extra szükségessége miatt nem jó nekem. Ilyen alapon bármi jó. Illetve nem csak plusz jel van base64-ben, hanem "/" jel is. Ezért URL paraméteren kívül sem jó.
- A hozzászóláshoz be kell jelentkezni
Azért ne egy plusz urlencode döntse le a szervert a lábáról :) Mindenesetre akkor tényleg a második megoldás a legjobb.
Esetleg még rövidíthetsz, ha 36 helyett 62-es számrendszerbe tudnád konvertálni, (0-9, a-z, A-Z)
Ha nem riadsz meg a third party gemektől: https://github.com/whatyouhide/bases
vagy: https://github.com/steventen/base62-rb
- A hozzászóláshoz be kell jelentkezni
Nyilván mindent lehet. Jelenleg beépített gyors metódusokkal kerestem kombinációkat. Ez 36-os számrendszerig tud konvertálni.
- A hozzászóláshoz be kell jelentkezni
javaslom a sima digestet meghívni, majd az eredmenyre ezt ráereszteni, hogy url kompatibilis legyen
- A hozzászóláshoz be kell jelentkezni
Base64 kódolással 33%-al megnöveled az adat hosszt. Felesleges.
- A hozzászóláshoz be kell jelentkezni
ugyanazt érnéd el avval amit javasoltam mint a 3. opció által, csak url-kompatibilis lenne (és ugyanúgy 44 karakter, csak nem + és =, hanem - és _)
- A hozzászóláshoz be kell jelentkezni
Talán nem értelek félre, de ugye ha JS-ből csinálok base64-et, akkor a hexa karakterekre engedi rá, vagyis a hexa hossz + 33% lesz a végső hossz, nem 44 char. A harmadik opció a bináris adatból csinálja meg a base64-et.
- A hozzászóláshoz be kell jelentkezni
Valóban, asszem ezt benéztem, ugyanis a dokumentációból úgy jött le, hogy meg lehet hívni a digestet oly módon hogy byte array legyen a visszatérési érték, de most alaposabban megnézve ez nem igaz.
Ez esetben lehetett volna rárakni az url-safe base64-et a sima helyett, de így akkor ez sztornó (bár még mindíg opció ha manuálisan cseréled le utánna a 2 inkompatibilis karaktert hogy url-ben is átmenjen).
- A hozzászóláshoz be kell jelentkezni
Mégis jó amit mondasz, a sima digest metódus. Arra ráeresztve az általad linkelt metódust szerintem is ez a verzió lesz a legjobb (rövid és url safe, azt hittem karakter kimenetűre gondoltad ráereszteni a base64-et):
Base64.urlsafe_encode64(Digest::SHA256.digest("hello"))
=> "LPJNul-wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ="
(44 char)
Köszi. Benne is van hogy "wow" ;)
- A hozzászóláshoz be kell jelentkezni
Mondjuk ennyiből akár el is hagyhatom az utolsó karaktert, mert az mindig "=", így 43 karakter lesz. Illetve a sima base64 is jó lehet ha kikapom belőle a nem alfanumerikus karaktereket, meggondolandó hogy mennyire romolhat így az entrópia minősége:
10.times{ p Digest::SHA256.base64digest(rand.to_s)[0..-2].gsub(/[^0-9a-zA-Z]/,"0") };
"NeNTjAE1pJh9JHu285HCqDUMpbZksoHegOcD1VLC1Hc"
"aVw0zF7n65kWlyaRxeMlyjJUBgwjyh02viREpj7s6aA"
"tXyQezUvPXqoUps07aQPIRYYFwVV2D0RY6LrsXqJu58"
"6wcQJY8O5dgap1DQSLb1WJb0vCQimZafdUaNtd0U0iY"
"2zTrjelp2Z40cXTvdKYH8OSDJTv0OvP326I1QP8mON0"
"G1Syb6IHiN1EUswNuD03FI940Yc6U9y6Ih2JeVMhhKw"
"ZT73MaoLtmSLGe9Tnw4jaZwFmTs7aV27jsZIJ51v9fw"
"kw0ugd76zG08cyYeB9fo4itON0gti7CosmpbEH1v3yM"
"9TOlvE5RbyG9tHTCKlSArdv9AECEv7nBQCZV9WOGmtQ"
"kD1jmOBf2t7IHGHYrl2YM3nMvxLMLxGJKoFDQ0o0ezA"
- A hozzászóláshoz be kell jelentkezni