Caut să criptez acest șir cu o cheie publică în care mesajul rezultat are < 64 de caractere.
De fapt, se pare că puteți, dacă reduceți puțin securitatea.
O abordare ar fi folosirea ECIES cu, să zicem, P-192. (EC-Elgamal ar fi, de asemenea, funcțional - cred că aceasta este o abordare superioară)
În această schemă, cheia privată este o valoare aleatorie $r$, iar cheia publică este o valoare $P = rG$, Unde $G$ este punctul generator. Pentru a cripta, alegem o valoare aleatorie $s$, și calculați ambele $sG$ și $sP$; trimitem punctul $sP$ (sau, în cazul dvs., doar coordonatele x) printr-o funcție de derivare a cheii, care generează o cheie pe care o folosim pentru a cripta mesajul real. Textul cifrat constă din valoare $sG$ (în cazul dvs., doar coordonata x) și criptarea simetrică.
Acum, dacă folosim curba P-192, coordonata x a lui $sG$ poate fi exprimat în 192 de biți; folosind alfabetul care ni s-a dat (care are 81 de simboluri), care ar lua 31 de caractere (de exemplu, prin conversia valorii de la 0 la circa $2^{192}$ în baza 81).
În ceea ce privește criptarea simetrică a mesajului, putem folosi o metodă Format Preserving Encryption [1]; aceasta poate converti un mesaj format dintr-un alfabet de 81 de simboluri într-un text cifrat de același alfabet și lungime.
Deci, o criptare de 31 de simboluri (cel mai mare de care ați spus că sunteți interesat) ar cripta ca mesaj de 31+31 = 62 de simboluri - în conformitate cu cerințele dvs.
Costurile de securitate:
P-192 are „securitate pe 96 de biți”; este ceva mai puțin decât folosim în mod normal - totuși, este încă destul de bun.
Scurgem lungimea mesajului (deoarece metoda Format Preserving Encryption păstrează lungimea); dacă aceasta este o cerință suplimentară, puteți oricând să completați mesajul la 32 de octeți (cu ultimul caracter indicând lungimea reală a mesajului) - cu aceasta, îndeplinim în continuare cerința de lungime
[1]: În mod normal, cu ECIES, folosim o transformare explicită de integritate în criptarea simetrică. Aș susține că acest lucru nu este necesar în acest caz - orice modificare a FPE ar decripta ca ceva aleatoriu, iar adversarul poate întotdeauna înlocui textul cifrat cu ceva care decriptează la ceva aleatoriu (prin simplul expedient de a alege un text simplu aleatoriu și de a-l cripta cu cheia publică).