|
Encoder et décoder en base64 |
Iniciado por gmail_vinii, mar., 22 2005 9:57 AM - 5 respostas |
| |
| | | |
|
| |
Publicado em março, 22 2005 - 9:57 AM |
Bonjour,
Est-ce que quelqu'un comment on fait pour encoder et décoder queleque chose en base64 ?
Merci |
| |
| |
| | | |
|
| | |
| |
Publicado em março, 22 2005 - 10:20 AM |
cherche dans la soucoupe "hexa" et utilise l'assistant : Conversion entre nombres décimaux et hexadécimaux ce code peut être facilement adapté pour d'autres bases
bon dev JCP
"Vincent" <gmail_vinii@laposte.net> a écrit dans le message de news: d1oj34$3iu$1@biggoron.nerim.net...
Bonjour,
Est-ce que quelqu'un comment on fait pour encoder et décoder queleque chose en base64 ?
Merci
|
| |
| |
| | | |
|
| | |
| |
Publicado em março, 22 2005 - 10:56 AM |
Bonjour,
Pour encoder en base64, tu peux utiliser la fonction crypte, pour décoder la fonction decrypte, comme suit :
Chaine_Encodee_Base64=Crypte(Chaine_Source,"",crypteAucun,Vrai)
(C'est beaucoup plus rapide que les algorythme que tu pourras trouver, qui encode caractère par caractère).
Utilise la fonction decrypte avec les même arguments pour décoder. |
| |
| |
| | | |
|
| | |
| |
Publicado em março, 22 2005 - 9:21 PM |
Attention, la fonction crypte / décrypte telle que vous la donnez ne crée pas ou ne décode pas correctement la base 64... Il ne respecte pas et ne crée pas, entre autres, les "=" en fin de chaîne, ce qui rends ces fonctions inutiles...
Par exemple essayez de coder: testtest en base 64 vous aurez: dGVzdHRlc3Q= or, via la fonction crypte, vous aurez: dGVzdHRlc3Q qui ne sera pas vraiment compréhensible par d'autres décodeurs...
Plus grave, si vous essayez de décoder la chaîne: dGVzdHRlc3Q= Vous obtiendrez via décrypte: testtest? alors que la bonne "traduction" est bien: testtest
Bref, il vaut mieux utiliser un algo externe correct... |
| |
| |
| | | |
|
| | |
| |
Publicado em março, 22 2005 - 9:22 PM |
Attention, la fonction crypte / décrypte telle que vous la donnez ne crée pas ou ne décode pas correctement la base 64... Il ne respecte pas et ne crée pas, entre autres, les "=" en fin de chaîne, ce qui rends ces fonctions inutiles...
Par exemple essayez de coder: testtest en base 64 vous aurez: dGVzdHRlc3Q= or, via la fonction crypte, vous aurez: dGVzdHRlc3Q qui ne sera pas vraiment compréhensible par d'autres décodeurs...
Plus grave, si vous essayez de décoder la chaîne: dGVzdHRlc3Q= Vous obtiendrez via décrypte: testtest? alors que la bonne "traduction" est bien: testtest
Bref, il vaut mieux utiliser un algo externe correct... |
| |
| |
| | | |
|
| | |
| |
Publicado em julho, 06 2005 - 3:58 PM |
Tout le monde parle d'encodage en base64, mais personne ne donne d'algorithme... Je me permet donc d'en poster un qui fonctionne correctement ci-dessous... En espérant que ça puisse dépanner certains...
[ N'hésitez pas à réagir si d'aventure "bug's" il devait y avoir...]
_________________________________________________________________ // NAME // base64encode // // DESCRIPTION // Encode data using base-64 // Capable of operating in RFC 2045 compliant mode, or "URL safe" mode // "URL safe" mode is a nonstandard mode designed for use in URL querystrings. // // PARAMETERS // sBinaryString - Any string data // // bNoWrap (optional) - If set to anything other than false then line wrapping will not occur // Default is false in compliance with RFC 2045. // // bUrlSafe (optional) - If set to anything other than false then "URL safe" mode is used. // This is a nonstandard mode that can be used in URLs without additional // URL encoding. Default is false for compliance with RFC 2045. // // RETURNS // Base-64 encoded string. FUNCTION base64encode( sBinaryString is string, bNoWrap is boolean = False, bUrlSafe is boolean = False) sBase64Lookup is a string sTrail is a string sOutput is a string nIndex is an int nTrailingBytes is an int nLengthWhole is an int nByte1,nByte2,nByte3 are an int sChar1,sChar2,sChar3,sChar4 are strings
// Define the lookup table according to whether we are using // "URL safe" mode or RFC 2045-compliant mode:
IF( NOT bUrlSafe ) THEN sBase64Lookup = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" sTrail = "=" ELSE sBase64Lookup = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_" sTrail = "." END
// Initialise everything else...
sOutput = "" nIndex = 1 nTrailingBytes = modulo(Length(sBinaryString), 3) nLengthWhole = Length(sBinaryString)- (nTrailingBytes)
// Store all the complete quanta...
WHILE nIndex < nLengthWhole
nByte1 = Asc(Middle(sBinaryString, nIndex, 1)) nByte2 = Asc(Middle(sBinaryString, nIndex + 1, 1)) nByte3 = Asc(Middle(sBinaryString, nIndex + 2, 1))
sChar1 = sBase64Lookup[[ IntegerPart(( BinaryAND( nByte1, 252 ) / 4 )) + 1 ]] sChar2 = sBase64Lookup[[ IntegerPart( BinaryAND( (nByte1*256)+nByte2, 1008 ) / 16 ) + 1 ]] sChar3 = sBase64Lookup[[ IntegerPart( BinaryAND( (nByte2*256)+nByte3, 4032 ) / 64 ) + 1 ]] sChar4 = sBase64Lookup[[ IntegerPart( BinaryAND( nByte3, 63 ) ) + 1]]
sOutput = sOutput + sChar1 + sChar2 + sChar3 + sChar4 nIndex = nIndex + 3
// Wrap at 76 characters IF( NOT bNoWrap ) THEN IF( modulo((nIndex-1) , 57) = 0 ) THEN sOutput = sOutput + CR END
END
// Store any partial quanta at the end....
IF( nTrailingBytes = 1 ) THEN
// Partial quanta containing a single byte...
nByte1 = Asc( sBinaryString[[ nIndex ]] ) sChar1 = sBase64Lookup[[ IntegerPart( BinaryAND( nByte1, 252 ) / 4 ) + 1 ]] sChar2 = sBase64Lookup[[ IntegerPart( BinaryAND( nByte1*256, 1008 ) / 16 ) + 1 ]] sChar3 = sTrail sChar4 = sTrail
sOutput = sOutput + sChar1 + sChar2 + sChar3 + sChar4
ELSE IF ( nTrailingBytes = 2 ) THEN
// Partial quanta containing two bytes...
nByte1 = Asc( sBinaryString[[ nIndex ]] ) nByte2 = Asc( sBinaryString[[ nIndex + 1 ]] ) sChar1 = sBase64Lookup[[ IntegerPart( BinaryAND( nByte1, 252 ) / 4 ) + 1 ]] sChar2 = sBase64Lookup[[ IntegerPart( BinaryAND( (nByte1*256)+nByte2, 1008 ) / 16 ) + 1 ]] sChar3 = sBase64Lookup[[ IntegerPart( BinaryAND( nByte2*256, 4032 ) / 64 ) + 1 ]] sChar4 = sTrail
sOutput = sOutput + sChar1 + sChar2 + sChar3 + sChar4
END
// All done!
RESULT sOutput _________________________________________________________________ |
| |
| |
| | | |
|
| | | | |
| | |
|