Byl publikován přehled vývoje renderovacího jádra webového prohlížeče Servo (Wikipedie) za uplynulé dva měsíce. Servo zvládne už i Gmail. Zakázány jsou příspěvky generované pomocí AI.
Raspberry Pi Connect, tj. oficiální služba Raspberry Pi pro vzdálený přístup k jednodeskovým počítačům Raspberry Pi z webového prohlížeče, byla vydána v nové verzi 2.5. Nejedná se už o beta verzi.
Google zveřejnil seznam 1272 projektů (vývojářů) od 185 organizací přijatých do letošního, již jednadvacátého, Google Summer of Code. Plánovaným vylepšením v grafických a multimediálních aplikacích se věnuje článek na Libre Arts.
Byla vydána (𝕏) dubnová aktualizace aneb nová verze 1.100 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.100 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána v nové verzi 2025.5.
OpenSearch (Wikipedie) byl vydán ve verzi 3.0. Podrobnosti v poznámkách k vydání. Jedná se o fork projektů Elasticsearch a Kibana.
PyXL je koncept procesora, ktorý dokáže priamo spúštat Python kód bez nutnosti prekladu ci Micropythonu. Podľa testov autora je pri 100 MHz približne 30x rýchlejší pri riadeni GPIO nez Micropython na Pyboard taktovanej na 168 MHz.
Grafana (Wikipedie), tj. open source nástroj pro vizualizaci různých metrik a s ní související dotazování, upozorňování a lepší porozumění, byla vydána ve verzi 12.0. Přehled novinek v aktualizované dokumentaci.
Raspberry Pi OS, oficiální operační systém pro Raspberry Pi, byl vydán v nové verzi 2025-05-06. Přehled novinek v příspěvku na blogu Raspberry Pi a poznámkách k vydání. Pravděpodobně se jedná o poslední verzi postavenou na Debianu 12 Bookworm. Následující verze by již měla být postavena na Debianu 13 Trixie.
Richard Stallman dnes v Liberci přednáší o svobodném softwaru a svobodě v digitální společnosti. Od 16:30 v aule budovy G na Technické univerzitě v Liberci. V anglickém jazyce s automaticky generovanými českými titulky. Vstup je zdarma i pro širokou veřejnost.
tajny-text > quY93vna5EMPb3q9Puura
quY93vna5EMPb3q9Puur > tajny-text
Řešení dotazu:
sed -re "s/tajny-text/quY93vna5EMPb3q9Puur/" sed -re "s/quY93vna5EMPb3q9Puur/tajny-text/"nz
Tyhle domácí úkoly… Podle mě to postrádá smysl, pokud je člověk nevyřeší nějak samostatně. Není jasné, o jakou šifru se jedná. Takže Bash může umět třeba tohle:
$ string2base64 tajny-text dGFqbnktdGV4dA== $ string2base64 tajny-text | base64 -d tajny-text
Implementace string2base64
se dá klidně udělat à la prase — například následující věc je v čistém Bashi bez dalších procesů. Ale neumí to ani náhodou Unicode a dokonce to neumí správně ošetřit nulový byte. Ale jinak to téměř funguje. Specifikace je třeba tady. Dekodér z base64 zpět do plaintextu si pozorný čtenář zajisté dovede sám naimplementovat za cvičení, podobně jako drobnou úpravu, která by string2base64
umožnila zpracovávat stream neomezené délky. Výkonnostních optimalizací se tam nabízí tři spousty a půl.
#!/bin/bash # Creates a global mapping from ASCII bytes 1..255 to their binary codes. # For example, 'a' (i.e., ${#BYTE2CODE['a']}) maps to '01100001'. initcache() { if ((255 != "${#BYTE2CODE[@]}")); then declare -Ag BYTE2CODE local -i i for ((i = 1; i < 256; ++i)); do eval BYTE2CODE[$\'\\x"$(printf '%x' "$i")"\']="$(code2bin "$i")" done fi } # Translates an ASCII byte in decimal notation into an 8-digit binary literal. # For example, argument '97' (otherwise known as 0x61 or 'a') yields '01100001'. code2bin() { local -ai bits=(0 0 0 0 0 0 0 0) local -i number="$1" local -i idx=${#bits[@]} local -i i while ((number && idx)); do bits[--idx]='number % 2' ((number /= 2)) done for ((i = 0; i < ${#bits[@]}; ++i)); do echo -n "${bits[i]}" done } # Translates a string into a binary representation suitable for base64 encoding. # The first output line is the number of padding characters (0 to 2). # Each subsequent line is a binary representation of 3 bytes or 4 base64 digits. # For example, argument 'aa' yields '1' (1 padding symbol) on the first line and # '011000010110000100000000' (24 bits of data) on the second line. string2code() { local -ri equals=$(((3 - ${#1} % 3) % 3)) local -i i local buffer="$equals" for ((i = 0; i < ${#1}; ++i)); do if ((!(i % 3))); then echo "$buffer" buffer= fi buffer+="${BYTE2CODE[${1:i:1}]}" done echo -n "$buffer" for ((i = 0; i < equals; ++i)); do code2bin 0 done echo } # Translates 6 bits (a string of '0' and '1' characters) to a base64 digit. # For example, argument '100111' (39 in decimal notation) yields 'n'. bin2basechar() { local -ri code=2#"$1" local -a chars if ((code < 26)); then chars=(A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) echo -n "${chars[code]}" elif ((code < 52)); then chars=(a b c d e f g h i j k l m n o p q r s t u v w x y z) echo -n "${chars[code - 26]}" elif ((code < 62)); then chars=(0 1 2 3 4 5 6 7 8 9) echo -n "${chars[code - 52]}" else chars=(+ /) echo -n "${chars[code - 62]}" fi } # Translates its first (and only) argument into base64. # For example, argument 'doprdele' yields 'ZG9wcmRlbGU='. string2base64() { local -a fragments local fragment local line local -i equals local -i i local chars initcache string2code "$1" | { read equals while read line; do echo -n "$chars" fragments=("${line:0:6}" "${line:6:6}" "${line:12:6}" "${line:18:6}") chars= for fragment in "${fragments[@]}"; do chars+="$(bin2basechar "$fragment")" done done if ((equals)); then echo -n "${chars:0:-equals}" for ((i = 0; i < equals; ++i)); do echo -n '='; done else echo -n "$chars" fi echo } }
Pár příkladů, kde k zakódování používám výše uvedenou funkci string2base64
a k dekódování slouží base64
z coreutils
:
$ string2base64 zzz$'\xa' enp6Cg== $ string2base64 'bla bla bla'$'\xa' YmxhIGJsYSBibGEK $ string2base64 zzz$'\xa' | base64 -d zzz $ string2base64 'bla bla bla'$'\xa' | base64 -d bla bla bla
(Konce řádků jsou tam^^^ samozřejmě jen tak bezdůvodně, because we can.) A tady ještě drobný test, jestli to vůbec něco rozumného dělá:
for i in x{a..z} {A..Z}y a{0..9}b; do echo -n "${i} " string2base64 "$i" | base64 -d echo done
Já přece netvrdím, že Base64 je šifra. Jenom jsem chtěl (zdlouhavě, protože proč ne) naznačit, že k řešení úkolu s opravdovou šifrou je lepší začít od něčeho mnohem jednoduššího, co se taky zabývá jednotlivými bity.
Je potřeba rozlišovat mezi šifrou a kódem. Rozdíl je ve velikosti prostoru „klíčů“.
Příklad: AES256 s klíčem 0 je kód. AES256 (bez dalších upřesnění) je šifra.
Base64 je kód. Neslouží k utajení informací, prostor „klíčů“ má velikost asi tak 1 a nemá to žádné z obvyklých vlastností, které se u šifer považují za výhodné (například podobnost náhodným datům atd. atp.).
A ďalej čítam že BASE64 má nenulovú dĺžku, pričom nie je šifra.
Tenhle tvůj výrok je fakt zoufalá kravina. Nic takového jsem nikde nenapsal. Ty sis prostě vymyslel náhodný žvást, který mi tu podsouváš. O nulové délce něčeho (ať už přirození, klíče nebo hůlky) jsem nic nepsal. Takže si to zkus přečíst ještě jednou. To někdy pomůže, pokud jde o porozumění psanému textu, a je to lepší než vymýšlet cosi, co v mém textu vůbec nebylo.
Tvé fantazie o tom, že Base64 je šifra, jsou jakýsi chabý pokus o trolling nebo slovíčkaření, jehož smysl mi uniká. Mezi kódem a šifrou je opravdu hodně velký rozdíl, jak už tu správně zmínili jiní. Podle tvé ideologie je ASCII nebo UTF8 taky šifra, protože za šifru považuješ nejspíš cokoliv. (Přitom mezi ASCII a Base64 není vůbec žádný rozdíl, pokud jde o „zabezpečení“ a prostor klíčů.)
Když má prostor klíčů velikost 1, není to šifra. Potvrzuji a podtrhuji sám sebe ještě jednou, zatímco ty sám sebe dál ztrapňuješ nekonzistentními nesmysly.
Není problém nepochopit napoprvé psaný text. Problém je nepochopit ho ani napodruhé, což jsi právě předvedl, a pořád si nepřiznat chybu. Vypadá to, že se zase snažíš (a zdaleka to není v místních diskusích poprvé) bezdůvodně trollovat, slovíčkařit a opakovat do omrzení nesmysly.
Tvrzení, že Base64 je šifra, by mohl být skoro i vtip — jenže ono se zdá, že to myslíš fakt vážně.
Mám tomu rozumieť tak, že sa mýlim keďže existuje nenulový kľúč ktorý má nulovú dĺžku?Ne, tak tomu rozumět nemáte. Nic takového neplyne z žádného komentáře, který tady byl napsán.
Neučil som sa z učebníc VUML aby mi takéto blbosti dávali zmysel.Blbosti tady zatím vymýšlíte jen vy – přečtete si nějaký komentář, vůbec ho nepochopíte, vezmete z nějak některá slova, vhodíte do osudí s dalšími slovy, zamícháte a vypadne z toho vaše „odpověď“. Jak už jsem vám radil, pro začátek zkuste přemýšlet o tom, zda „klíč“ a „velikost prostoru klíčů“ je opravdu to samé. Až dojdete k tomu, že není, budete na dobré cestě pochopit, o čem se tu diskutuje.
Aha. Takže jsi nepochopil rozdíl mezi nulovým klíčem (nebo obecně libovolným předem daným klíčem, třeba se samými jedničkami) a klíčem nulové délky. Jinými slovy, nepochopil jsi psaný text. Už zase. Zkus si to přečíst ještě jednou, tentokrát asi počtvrté.
Mimochodem, tvé tvrzení, že kráva je pes, považuji za nepravdivé. To uvádím jen pro ilustraci, jak to vypadá, když si někdo vymýšlí bláboly, které jsi netvrdil, a předhazuje ti je, jak se mu to hodí. Tohle je tvůj styl "debaty".)
Dokážeš bez překrucování interpretovat výše uvedené jednoduché věty, nebo to mám ještě nějak podrobněji vysvětlit?
Kde přesně tvrdím, že "nenulový klíč může mít nulovou délku"? Prosím citaci. Opravdu už to s těmi výmysly přeháníš. Nikde jsem nic takového netvrdil.
Starověké pokusy o šifry jsou v tomto kontextu zcela off-topic, takže na ně nebudu nijak reagovat.
Base64 není šifra. Účelem Base64 není (a nikdy nebylo) utajení dat. Je na tom snad něco nepochopitelného?
Ale keď to má nenulový kľúč, tak je to šifra.To tady nikdo netvrdil, kromě vás. Naopak např. v komentáři 33 Andrej výslovně uvádí AES256 s nenulovým klíčem („samé jedničky“), a tvrdí, že to není šifra.
A špeciálne o base64 tvrdíš že je to má nenulový kľúčNe, to nikdo nikde nepsal, to je jen další váš výmysl.
nenulový kľúč ktorý určuje že je to šifraA další váš výmysl. Ale možná to bude jenom tím, že jste stále ještě nepochopil rozdíl mezi pojmy „klíč“ a „prostor klíčů“. Konkrétní PIN k vaší platební kartě, třeba 1234, je „klíč“. Když někdo ten klíč (PIN) zná, může s tou kartou platit nebo s ní vybírat peníze. Ten váš „nulový klíč“ by byl PIN 0000. „Prostor klíčů“ je seznam všech možných klíčů – takže když vím, že platební karta má čtyřmístný dekadický PIN, vím, že prostor klíčů je 0000, 0001, 0002, … , 9999, tedy celkem 10 000 možných klíčů – velikost prostoru klíčů (PINů) platební karty je tedy 10 000. Už to chápete?
Andrej tvrdil že keď to má nenulový kľúč, tak je to šifra. A keď to má nulový kľúč, tak je to kódNe, netvrdil. Tahle nesmyslná tvrzení se poprvé objevují ve vašem komentáři, my vám je pořád vyvracíme a vy je pořád opakujete.
Pričom base64 má podľa neho nenulový kľúč ale nie je to šifra.Ne, to také nikde netvrdil. To akorát vy pořád nechápete rozdíl mezi „klíčem“ a prostorem klíčů“. BASE64 žádný klíč nemá, takže by se s přimhouřením očí dalo tvrdit, že prostor klíčů má velikost 1. Což také napsal Andrej.
Nič z toho som si nevymyslel, sú to jeho veľavravné tvrdenia.To jste si vymyslel. Kdyby to napsal v diskusi někdo jiný, můžete na příslušný komentář odkázat, můžete jej citovat. Problém je v tom, že jste hlupák a zaměňujete konkrétní klíč a prostor klíčů, přestože jste už byl mnohokrát upozorněn, že to není to samé. Vy se ale stále tváříte, že jste tuto informaci nezaznamenal, a stále dokola opakujete ty svoje nesmysly.
Příspěvek, na který odkazuješ, netvrdí ani náhodou, ani v náznaku a ani omylem nesmysly, které tady omíláš. Zase jsi nepochopil psaný text. Zkus si ten příspěvek přečíst třeba desetkrát — i když teď už pochybuju, že to pomůže.
Ani po desáté iteraci jsi nevzal v potaz, že velikost prostoru klíčů (vyplývající například z délky klíče) a hodnota konkrétního jednoho klíče (například 0, tedy 256 nulových bitů v případě AES256) jsou dvě naprosto odlišné záležitosti, které se nedají míchat dohromady.
Zkus se pro začátek naučit jednoduché tvrzení: Base64 není šifra. To je opravdu všechno, co je třeba vědět, zejména pokud někdo není schopen rozlišovat mezi délkou klíče, hodnotou klíče a velikostí prostoru klíčů.
user@stroj:~$ echo tajny-text | xxd -p 74616a6e792d746578740a user@stroj:~$ echo 74616a6e792d746578740a | xxd -r -p tajny-textJinými slovy, nejde ti o šifru jako takovou, ale o utilitu, co ti udělá z libovolného (třebas i binárního) řetězce řetězec textový, jaký se pak dá obrábět přes další utility. Alespoň tedy já to tak v bashových skriptech dělám. Jestli se pak takový řetězec prožene přes base64, openssl, nebo něco jiného, je už pak naprostý šumák.
Protože onu zjevnou a zcela správnou interpretaci zadání už předvedl Jenda, ostatní se pochopitelně pokusili příslušné zadání nějak domyslet a dodefinovat, aby nebylo tak absurdně triviální. V tom nevidím nic špatného.
Tiskni
Sdílej: