ONLINE HELP
 WINDEVWEBDEV AND WINDEV MOBILE

Help / WLanguage / WLanguage functions / Standard functions / Encryption/compression functions
  • Format binaire d'une chaîne cryptée
  • Cryptage/Décryptage d'un fichier externe
  • Cryptage en PHP
  • Cryptage en Android / Java et décryptage par une application WINDEV (ou inversement)
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Avertissement
A partir de la version 22, cette fonction est conservée par compatibilité. Pour plus de sécurité, il est recommandé d'utiliser la fonction CrypteStandard.
Crypte une chaîne de caractères sous forme binaire ou sous forme ASCII.
Remarques :
  • Cette chaîne de caractères pourra être décryptée avec la fonction Décrypte.
  • Si le cryptage et le décryptage se font sur des plateformes différentes (par exemple cryptage sous Android et décryptage sous Windows), utilisez les fonctions CrypteStandard et DécrypteStandard. Pour plus de détails, consultez le paragraphe "Remarques".
Exemple
// Cryptage d'une chaîne
Res = Crypte("Le numéro de ma carte bancaire 52327453829011", "MotDePasse")
// Encodage en base 64 d'une chaîne
bufBase64 est un Buffer = Crypte(bufAEncoder, "", compresseAucun + crypteAucun, encodeBASE64)
Syntaxe
<Résultat> = Crypte(<Chaîne à crypter> , <Mot de passe> [, <Type de cryptage> [, <Format de la chaîne cryptée>]])
<Résultat> : Chaîne de caractères
  • Chaîne de caractères cryptée,
  • Chaîne vide ("") en cas d'erreur. Pour plus de détails sur l'erreur, utilisez la fonction ErreurInfo.
<Chaîne à crypter> : Chaîne de caractères
Texte à crypter.
<Mot de passe> : Chaîne de caractères
Mot de passe utilisé pour crypter la chaîne de caractères. Ce mot de passe sera utilisé pour décrypter la chaîne cryptée (fonction Décrypte). Un mot de passe long permet d'optimiser la sécurité du cryptage.
<Type de cryptage> : Constante ou combinaison de constante optionnelle
Indique le type de cryptage et / ou de compression :
  • Type de cryptage :
    crypteAnsiLe cryptage réalisé est identique à celui réalisé dans une application WINDEV ou WEBDEV. Utile pour les applications cryptant en WINDEV Mobile et décryptant en WINDEV par exemple.
    Pour utiliser cette constante, le paramètre <Format de la chaîne cryptée> doit correspondre à la constante encodePCS.
    Remarque : Si la constante crypteAnsi n'est pas combinée à une autre constante précisant le type de cryptage, le paramètre <Mot de passe> est ignoré.
    Cette constante est utilisable uniquement en WINDEV Mobile pour Windows CE.
    WINDEVWEBDEV - Code ServeurAndroidWidget AndroidiPhone/iPadJavaPHP Cette constante n'a aucun effet.
    crypteAucunAucun cryptage n'est effectué
    crypteRapide
    (Valeur par défaut)
    La priorité est donnée à la rapidité du cryptage (algorithme sur 128 bits).
    Java L'algorithme utilisé sera de type BlowFish.
    AndroidWidget Android Cette constante n'est pas disponible.
    PHP L'algorithme utilisé sera de type BlowFish à 16 rondes.
    crypteRC516La priorité est donnée à la sécurité du cryptage (algorithme RC5 sur 16 rondes).
    AndroidWidget AndroidJavaPHP Cette constante n'a aucun effet.
    crypteSécuriséLa priorité est donnée à la sécurité du cryptage (algorithme RC5 sur 128 bits).
    AndroidWidget AndroidJava L'algorithme utilisé sera de type PBE (Password Based Encryption).
    PHP L'algorithme utilisé sera de type RINJDAEL 128 bits.
  • Type de compression :
    compresseAucun
    (Valeur par défaut)
    Aucune compression n'est effectuée.
    AndroidWidget AndroidJavaPHP Cette constante n'a aucun effet.
    compresseChaîneCourteLa chaîne sera compressée à l'aide d'un algorithme optimisé pour les chaînes de caractères de petite taille. Cette compression sera efficace uniquement si la constante crypteAucun est sélectionnée et si le paramètre <Format de la chaîne cryptée> correspond à la constante encodeAucun.
    AndroidWidget AndroidJavaPHP Cette constante n'a aucun effet.
    compresseLZWLa chaîne sera compressée avant d'être cryptée.
    AndroidWidget AndroidJavaPHP Cette constante n'a aucun effet.
<Format de la chaîne cryptée> : Constante optionnelle de type Entier
Indique le format de la chaîne cryptée :
encodeAucunFormat binaire. Le fichier crypté pourra comporter des caractères non-imprimables. La taille du fichier sera supérieure (environ 4 octets) à la taille du fichier d'origine.
encodeBASE64Format BASE 64. Le fichier est crypté avec l'algorithme BASE64. La taille du fichier sera supérieure (environ 30%) à la taille du fichier d'origine.
Pour effectuer un encodage en base 64, il est également possible d'utiliser plus simplement la fonction Encode avec la constante encodeBASE64 ou la constante encodeBASE64URL.
Le format base64 peut par exemple être utilisé pour insérer un fichier dans le corps d'un courrier électronique.
encodePCS
(Valeur par défaut)
Format ASCII. Le fichier crypté ne comportera que des caractères imprimables. La taille du fichier sera supérieure (environ 30%) à la taille du fichier d'origine.
Ce format peut par exemple être utilisé pour insérer un fichier crypté dans le corps d'un courrier électronique.
encodeUUEncodeFormat UUEncode. Le fichier est crypté avec l'algorithme UUEncode. La taille du fichier sera supérieure (environ 30%) à la taille du fichier d'origine.
Ce format peut par exemple être utilisé pour insérer un fichier crypté dans le corps d'un courrier électronique.
AndroidWidget AndroidJava Ce paramètre est ignoré. La chaîne cryptée sera au format BASE 64.
Remarques
WINDEVWEBDEV - Code ServeurEtats et RequêtesUniversal Windows 10 AppCode Utilisateur (MCU)PHPAjax

Format binaire d'une chaîne cryptée

Lorsque <Format de la chaîne cryptée> correspond à la constante encodeAucun, il faut manipuler la chaîne cryptée obtenue avec précaution. En effet, cette chaîne cryptée peut contenir des caractères de fin de chaîne. Dans ce cas, la chaîne sera tronquée par les opérations d'affichage.
Une partie de l'information cryptée sera perdue si :
  1. La chaîne cryptée est affichée dans un champ.
  2. La valeur de ce champ est utilisée pour le décryptage.
Par contre, si la chaîne cryptée est manipulée uniquement sous forme d'une variable chaîne, il n'y aura pas de perte d'information.

Cryptage/Décryptage d'un fichier externe

Pour crypter/décrypter un fichier externe, utilisez les fonctions fCrypte et fDécrypte.
PHP

Cryptage en PHP

En PHP, le cryptage de type BlowFish (constante crypteRapide) et le cryptage de type RINJDAEL (constante crypteSécurisé) s'appuient sur la librairie MCrypt. Cette librairie est très courante chez les hébergeurs PHP et donc toujours activée. Cette librairie peut être téléchargée sur le site de PHP.
Pour activer si nécessaire cette librairie en local, les éléments nécessaires sont :
  • PHP installé.
  • le fichier PHP.INI présent dans le répertoire Windows doit avoir la ligne "extension=php_mcrypt.dll".
  • le fichier php_mcrypt.dll doit exister dans le répertoire des extensions PHP. Ce répertoire est défini dans le fichier PHP.INI par la variable "extension_dir".
AndroidJava

Cryptage en Android / Java et décryptage par une application WINDEV (ou inversement)

Attention : les algorithmes de cryptage / décryptage utilisés en Java et Android ne sont pas les mêmes que ceux utilisés par WINDEV. Il n'est donc pas possible de crypter une chaîne de caractères en Java ou Android et de la décrypter avec WINDEV (et inversement).
Pour crypter une chaîne de caractères en Java ou Android et de la décrypter avec WINDEV (ou inversement), utilisez les fonctions CrypteStandard et DécrypteStandard.
Liste des exemples associés :
Les fonctions de chiffrement Exemples unitaires (WEBDEV) : Les fonctions de chiffrement
[ + ] Utilisation des fonctions de chiffrement de WEBDEV.
Cet exemple permet de :
- chiffrer une chaîne de caractères
- Déchiffrer une chaîne de caractères
Les fonctions de chiffrement (CrypteXXX, DécrypteXXX) Exemples unitaires (WINDEV) : Les fonctions de chiffrement (CrypteXXX, DécrypteXXX)
[ + ] Utilisation des fonctions de chiffrement de WINDEV.
Cet exemple permet de :
- Chiffrer une chaîne de caractères
- Déchiffrer une chaîne de caractères
Les fonctions de chiffrement Exemples unitaires (WINDEV Mobile) : Les fonctions de chiffrement
[ + ] Utilisation des fonctions WLangage de chiffrement.
Cet exemple permet de :
- Chiffrer une chaîne de caractères
- Déchiffrer une chaîne de caractères
WD Limitation de duree d utilisation Exemples didactiques (WINDEV) : WD Limitation de duree d utilisation
[ + ] Cet exemple montre comment limiter l'utilisation d'une application à une période donnée (période d'essai).
Dans cet exemple, nous abordons les principaux thèmes suivants :
1/ la protection d'une application pour une durée donnée
2/ la gestion de la base de registre

Résumé de l'exemple livré avec WINDEV :
Lorsque cet exemple est lancé pour la première fois, il est activé pour une période d'essai de 5 jours.
L'information de la date de premier lancement est stockée dans la base de registre avec l'utilisation d'une clé de contrôle pour vérifier que l'utilisateur final n'a pas essayé de la modifier. A la fin de la période d'essai, l'application est bloquée, à moins que l'utilisateur final ne dispose du code de déverrouillage de l'application
Composante : wd290std.dll
Minimum version required
  • Version 9
Comments
exemplo com fonte
https://repository.windev.com/resource.awp?file_id=281474976711928;exemplo-cryptografia-descryptografia
Boller
15 Mar. 2024
LINK Exemplos
https://forum.pcsoft.fr/fr-FR/pcsoft.br.windev/4235-comandos-criptografia-descriptografia-para-usar-windev-webdev-windev/read.awp
Boller
15 Mar. 2024
Valeurs aléatoire à chaque exécution
Bonjour,
j'utilise cette fonction pour chiffrer un mot de passe.
Je n'ai peut-être pas saisie l'utilité de cette fonction mais quelqu'un peut m'expliquer pourquoi entre chaque exécution elle renvoie des valeurs différentes ?

par exemple :

bufCrypte1 est un Buffer = CrypteStandard(sMDPcrytpe, bufClé, crypteAES128)
bufCrypte2 est un Buffer = CrypteStandard(sMDPcrytpe, bufClé, crypteAES128)


bufCrypte1 et bufCrypte 2 ont des valeurs différentes

Comme on peut s'y attendre, je ne retombe jamais sur sMDPcrytpe avec
bufRésultat est un Buffer = DécrypteStandard(bufCrypte1, bufClé, crypteAES128)


quelqu'un sait ?
Butachan
02 Mar. 2022
Example Encripta
//https://forum.pcsoft.fr/fr-FR/pcsoft.br.windev/2251-about-cryptstandart-and-uncryptstandart-2254/read.awp

Encripta(St is string, Pw is string)
x is string
i is int
n is int
p is int
j is int
//n0 is int
ok is boolean

p = 0

FOR i = 1 TO Length(St)
p += 1
IF p > Length(Pw) THEN p = 1
j = Asc(Middle(Pw, p, 1)) OR 128
n = Asc(Middle(St, i))

ok = False

WHILE ok = False
n = BinaryXOR(n, j) //encripta...
IF n < 31 THEN //se char de controle
n = (128 + n) //somar 128 e
//GoTo DeNovo //ecripta novamente
ELSE IF n > 127 AND n < 159 THEN //se nesta faixa pode ser char de controle
n = n - 128 //tira 128 e
//GoTo DeNovo //encripta novamente
ELSE
ok = True
END
END
x = x + Charact(n) //concatena string encriptada


END

RESULT x
BOLLER
05 Apr. 2017

Last update: 05/25/2022

Send a report | Local help