Décodage yenc en vb.net

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 749 fois - Téléchargée 16 fois

Contenu du snippet

J'ai developpé ce code dans le cadre du décodage des multiparts des posts du reseau Usenet.
Je metterai bientot en ligne la version d'encodage

Source / Exemple :


Public Function DecodeYenc(ByVal _Encoded() As Byte) as Byte()
        Dim _Decoded(),nbit As Byte      'Conteneur des bytes décodés
        Dim _Pos = 0 as Integer     'Increment de position du buffer
        Dim _special as boolean = False        'Special permet de sauter la position actuelle du buffer et de passer a un calcul different pour le prochain byte
        For Each _bit In _Encoded
            Array.Resize(_Decoded, _Pos + 1)    'A chaque passage on modifie la taille du buffer de sortie
            If (_special) Then                  'La boucle précédente à decouvert un caractere spéciale
                nbit = ((_bit + 256) - 106) Mod 256    'Calcul
                _Decoded(_Pos) = nbit           'On implémante au nouvelle coordonées le byte calculé
                _Pos += 1                       'Incrementation du BufferSize
                _special = False                'On remet Special a 0
            ElseIf (_bit = 61) Then             'Dectection d'un caractere spécial on passe _special a true
                _special = True
            Else
                nbit = ((_bit + 256) - 42) Mod 256 'Calcul
                _Decoded(_Pos) = nbit           'On implémante au nouvelle coordonées le byte calculé
                _Pos += 1                       'Incrementation du BufferSize
            End If
        Next
        Return _Decoded
    End Function

Conclusion :


Très simple a utilisé on envoi le buffer codé et on le récupère décodé

Ex :
Dim Decodé= DecodeYenc(Encodé)
Testé avec de nombreuse source codé 100% de comparaison positive avec un contenu decrypté, testé jusqu'a 250ko en entrée

A voir également

Ajouter un commentaire

Commentaires

PWM63
Messages postés
127
Date d'inscription
lundi 11 octobre 2004
Statut
Membre
Dernière intervention
18 mai 2016
-
Tout à fait, ce n'est qu'un nom de variable, mais c'est aussi 1 code adressé aux débutants.
Ca pourrait être comme nommer ses variables toto, titi, tutu, tata, tyty, toitoi et toutou.
Bref, autant faire en sorte de ne pas les induire en erreur tout en rendant le code facilement compréhensible à la lecture.
NINATECH
Messages postés
1
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
10 mars 2009
-
Merci de vos retours, j'ai modifié les déclarations en début de code.
Concernant les bit/byte/octet, en effet, mais le code le fait correctement, il n'y a que le fait d'avoir declaré la variable sous le nom nbit, qui porte a confusion, mais ce n'est qu'un non de variable.
PWM63
Messages postés
127
Date d'inscription
lundi 11 octobre 2004
Statut
Membre
Dernière intervention
18 mai 2016
-
Bonjour,

Plusieurs variables déclarées sans type explicite,
Déclaration d'1 variable plusieurs fois (même si ça fonctionne parfaitement),
Et comme Patrice99 l'a fait remarquer, un élément d'1 tableau d'octets reste 1 octet, et non 1 bit.
Dim _Pos 0 'Dim _Pos As Integer 0Dim _special False 'Dim _special As Boolean False
For Each _bit In _Encoded 'For Each _byte As Byte In _Encoded
Dim nbit =... 'Déclarer 1 seule fois plutôt que de déclarer n fois Dim nbyte As Byte, nbyte =...
cs_Patrice99
Messages postés
1222
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018
-
Attention à ne pas confondre bit et byte : 1 byte = 8 bits.
Byte = Octet en français, et bit reste bit.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.