[Résolu] Encodage base64 C / PHP différents ?

bnkbnk Membre
avril 2010 modifié dans API AppKit #1
Bonjour,

J'ai un login et un pass md5 que je souhaite comparer.

Coté serveur j'utilise cette fonction:
<br />&lt;?php<br />echo base64_encode(&#39;test:&#39;.md5(&#39;test&#39;));<br />?&gt;<br />

Ce qui me donne -> dGVzdDowOThmNmJjZDQ2MjFkMzczY2FkZTRlODMyNjI3YjRmNg==


Coté iPhone, j'ai essayé plusieurs méthodes.
Exemple avec celle-ci:
<br />int encode(unsigned s_len, char *src, unsigned d_len, char *dst)<br />{<br /> static char base64&#91;] = &quot;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/&quot;;<br /> unsigned triad;<br /> <br /> for (triad = 0; triad &lt; s_len; triad += 3)<br /> {<br />&nbsp; unsigned long int sr;<br />&nbsp; unsigned byte;<br />&nbsp; <br />&nbsp; for (byte = 0; (byte&lt;3)&amp;&amp;(triad+byte&lt;s_len); ++byte)<br />&nbsp; {<br />&nbsp;  sr &lt;&lt;= 8;<br />&nbsp;  sr |= (*(src+triad+byte) &amp; 0xff);<br />&nbsp; }<br />&nbsp; <br />&nbsp; sr &lt;&lt;= (6-((8*byte)%6))%6; <br />&nbsp; <br />&nbsp; if (d_len &lt; 4) return 1;<br />&nbsp; <br />&nbsp; *(dst+0) = *(dst+1) = *(dst+2) = *(dst+3) = &#39;=&#39;;<br />&nbsp; switch(byte)<br />&nbsp; {<br />&nbsp;  case 3:<br />&nbsp; &nbsp; *(dst+3) = base64[sr&amp;0x3f];<br />&nbsp; &nbsp; sr &gt;&gt;= 6;<br />&nbsp;  case 2:<br />&nbsp; &nbsp; *(dst+2) = base64[sr&amp;0x3f];<br />&nbsp; &nbsp; sr &gt;&gt;= 6;<br />&nbsp;  case 1:<br />&nbsp; &nbsp; *(dst+1) = base64[sr&amp;0x3f];<br />&nbsp; &nbsp; sr &gt;&gt;= 6;<br />&nbsp; &nbsp; *(dst+0) = base64[sr&amp;0x3f];<br />&nbsp; }<br />&nbsp; dst += 4; d_len -= 4;<br /> }<br /> <br /> return 0;<br /> <br />}<br />

Ce qui me donne ->IHRlc3Q6MDk4ZjZiY2Q0NjIxZDM3M2NhZGU0ZTgzMjYyN2I0ZjY=

Après recherche, je lis que la fonction PHP encode en base64 MIME et sur iPhone je ne sais pas.
Connaissez vous une méthode pour obtenir le même base64 en PHP et en C/Objective-C.

J'ai aussi récupéré les sources PHP et utilisé la fonction C derrière encode_base64 mais j'obtiens toujours
IHRlc3Q6MDk4ZjZiY2Q0NjIxZDM3M2NhZGU0ZTgzMjYyN2I0ZjY= sur mon iPhone et l'autre sur le serveur.

Une idée?

Merci!

Réponses

  • bnkbnk Membre
    avril 2010 modifié #2
    Ok.. j'ai trouvé.

    L'erreur venait de moi, je convertissais:
    <br />...stringWithFormat:@&quot; %@:%@&quot;, login, pass];<br />
    


    au lieu de:
    <br />... stringWithFormat:@&quot;%@:%@&quot;, login, pass];<br />
    


    /slap me
  • zoczoc Membre
    18:13 modifié #3
    >:)   :D
Connectez-vous ou Inscrivez-vous pour répondre.