Hei,
tarvitsisin apua base64 enkoodaus/dekoodaus -ohjelman tekoon.
Merkit luetaan stdin:stä. Enkoodaukseen käytän apuna base64 char-taulukkoa. Isoin ongelma mulle on tällä hetkellä se, etten käsitä miten kooditasolla muodostetaan ensin sisäänsyötettävistä merkeistä 24-bitin sekvenssi ja sitten se pilkotaan neljäksi kuuden bitin tavuksi. Lisäksi, voiko täydentämisen tehdä switch case -rakenteella?
Dekkodauksessa mulla on sama probleema, eli miten muodostetaan neljästä kuuden pitin mötkylästä 24-bitin sekvenssi ja sitten 3:ksi 8 bitin tavuiksi?
Tää on varmaan tosi helppo juttu, mutta en vaan kertakaikkiaan hoksaa. Tarvitsisin rautalankamallin koodin tekoon, paperilla kyllä asian osaan (eikä palkkien piirtely paperille ole tehnyt minusta yhtään viisaampaa), mutta bittioperaatioita en kertakaikkiaan onnistu luomaan, kun en tajua mitä niissä oikein siirtelen. Oisko täällä joku, joka tuntisi ko. kryptauksen ja kertoisi minulle selkokielellä, miten homma pitäis toteuttaa? ISO KIITOS etukäteen (nimim. viikon tietokoneen ruutua tuijottanut :-)
base64
1
276
Vastaukset
- Builder
Mureakuhasta!
Muokkaa siitä
#include
#include
#include
// Enkoodaukseen käytettävä lookup table */
char base64encode_lut[] =
{'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','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','0','1','2','3','4','5','6','7','8','9',' ','/','='};
/* dekoodaukseen käytettävä lookup table */
char base64decode_lut[] =
{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,62, 0, 0, 0,63,52,53,54,55,56,57,58,59,60,61, 0, 0,
0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0,26,27,28,
29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,
49,50,51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
/* enkoodaa base64:ksi.
* src = lähde
* dest = kohde
* len = kohteen puskurin koko */
void base64encode(char *src, char *dest, int len)
{
int i=0, slen=strlen(src);
for(i=0;i0x2];
*(dest )=base64encode_lut[(*src&0x3)0x4];
*(dest )=((i 1)
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
- 885516
Riikan kukkaronnyöri on umpisolmussa
Kulutus ei lähde liikkeelle, koska kansalaiset eivät usko, että: – työpaikka säilyy – tulot eivät romahda – talous ei h804732Jos vedetään mutkat suoraksi?
Niin kumpaan ryhmään kuulut? A) Niihin, jotka menevät edellä ja tekevät? Vai B) Niihin, jotka kulkevat perässä ja ar1113047Tanskan malli perustuu korkeaan ansioturvaan
Ja vahvoihin työllisyys- ja kotoutumispalveluihin. Suomessa Riikka on leikannut juuri näitä: palkkatukea, työttömyysturv892958Epäily: Räppäri yritti tappaa vauvansa.
https://www.mtvuutiset.fi/artikkeli/epaily-mies-yritti-tappaa-vauvansa/9300728 Tämä on erittäin järkyttävä teko täysin p232584Vain vasemmistolaiset ovat aitoja suomalaisia
Esimerkiksi persut ovat ulkomaalaisen pääomasijoittajan edunvalvojia, eivät auta köyhiä suomalaisia.612039Anteeksipyyntöni
Jätän tähän anteeksipyyntöni sinulle, koska en voi sanoa sitä missään muuallakaan. Pyydän anteeksi, jos purkamani tuska251976- 321523
Sydämeni valtiaalle
En täältä aio asioita kysellä. Haluan tuoda tiedoksesi, että pohjimmiltani en ihmisiä tahdo satuttaa ja ajattelen muiden1141439- 1851328