Bonjour,
Je dois utiliser cet assemblage (dispo ici)
Méthode: RSA 3072 + OAEP SHA512
J'ai créé un nouveau projet en WD26 pour faire un POC. J'ai copié dans le répertoire EXE du projet et j'ai importer la package dans le projet, jusque là ras. J'ai aussi ajouter l'assemblage "System"
J'ai du code exemple en C# donc j'ai créé une collection de procédures globale pour pouvoir saisir du code C# dans Windev. J'ai vu sur le forum de PcSoft que les "using" sont globaux à toute la collection j'ai donc créé ceci :
Il se peut qu'il y est trop de "using" déclarer, mais je ne suis pas un fin connaisseur je laisse tout.
Code CS : Sélectionner tout - Visualiser dans une fenêtre à part
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 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; using Org.BouncyCastle.Security; using Org.BouncyCastle.OpenSsl; using Org.BouncyCastle.Crypto; using Org.BouncyCastle.Crypto.Generators; using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Crypto.Encodings; using Org.BouncyCastle.Crypto.Engines; using Org.BouncyCastle.Crypto.Digests; public static void JustForUsing() { }
Et là 1ère de compilation :
- Erreur : error CS0234: Le type ou le nom d'espace de noms 'Linq' n'existe pas dans l'espace de noms 'System' (une référence d'assembly est-elle manquante*?) CSharp.JustForUsing, Procédure locale, ligne 6, colonne 14
- Erreur : error CS0234: Le type ou le nom d'espace de noms 'Tasks' n'existe pas dans l'espace de noms 'System.Threading' (une référence d'assembly est-elle manquante*?) CSharp.JustForUsing, Procédure locale, ligne 8, colonne 24
En utilisant l'option de menu "Réparer le projet" tout rentre dans l'ordre mais c'est agaçant car cela revient à chaque modification de code !!!!
Ensuite je crée ma 1ère procédure :
Je fais un test et tout est OK , j'obtiens bien une chaine cryptée, je la passe dans l'outil que ma fournit mon presta externe et j'arrive à la décryptée
Code CS : Sélectionner tout - Visualiser dans une fenêtre à part
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
26
27
28
29
30
31
32 public static string cs_encrypt(string _publicKey, string _message) { // Chargement de la clé publique AsymmetricKeyParameter publicKey; PemReader pemReader = new PemReader(new StringReader(_publicKey)); publicKey = (AsymmetricKeyParameter)pemReader.ReadObject(); // Préparation du moteur RSA avec OAEP + SHA-512 var oaep = new OaepEncoding( new RsaEngine(), new Sha512Digest(), // Digest principal new Sha512Digest(), // MGF1 digest null // Label (optionnel) ); // Initialisation du moteur en mode chiffrement oaep.Init(true, publicKey); // Message à chiffrer string message = _message; byte[] inputBytes = Encoding.UTF8.GetBytes(message); // Chiffrement byte[] encryptedBytes = oaep.ProcessBlock(inputBytes, 0, inputBytes.Length); string encryptedBase64 = Convert.ToBase64String(encryptedBytes); // Retour du résultat return encryptedBase64; }
Maintenant je souhaite, même si je n'en pas besoin réellement, faire la partie décryptage, seulement j'ai une erreur de compilation dans le code suivant :
Si qq'un a une idée je suis preneur.
Code CS : Sélectionner tout - Visualiser dans une fenêtre à part
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39 public static string cs_decrypt(string _privateKey, string _message) { // Chargement de la clé privée AsymmetricKeyParameter privateKey; PemReader pemReader = new PemReader(new StringReader(_privateKey)); object keyObject = pemReader.ReadObject(); if (keyObject is AsymmetricCipherKeyPair keyPair) //----------------------------------------> erreur privateKey = keyPair.Private; else if (keyObject is AsymmetricKeyParameter keyParam) //--------------------------------> erreur privateKey = keyParam; else //-------------------------------------------------------------------------------------------> erreur throw new InvalidOperationException("Clé privée non reconnue."); // Préparation du moteur RSA avec OAEP + SHA-512 var oaep = new OaepEncoding( new RsaEngine(), new Sha512Digest(), // Digest principal new Sha512Digest(), // MGF1 digest null // Label (optionnel) ); // Initialisation du moteur en mode déchiffrement oaep.Init(false, privateKey); // Message à déchiffrer string encryptedBase64 = _message; byte[] encryptedBytes = Convert.FromBase64String(encryptedBase64); // Chiffrement byte[] decryptedBytes = oaep.ProcessBlock(encryptedBytes, 0, encryptedBytes.Length); string decryptedMessage = Encoding.UTF8.GetString(decryptedBytes); // Retour du résultat return decryptedMessage; }
exemple de clé publique :
et sa clé privée:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 -----BEGIN PUBLIC KEY----- MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA1HFPdY8oJ6jVW1DDJkZA TkXriD6EUxfdrA0d/vea3NJVunOMwM4ZTp7ycWcThRNFdIRSIrxd/dDQwmRRokdY zfb3SGMrLuL5ErNRmVA/4+fmZ1y5xeerePPXTtHVehBBjSuZ8op6jwx0tHIyQzr2 vOxgjBXyfmZBWQ+rzPTYZwokLcv5pxkkq55JZTNW7k+8kDw3paLvMBfsyBELKcVI Gg3MMWiDIDOPIFOO1K1ppY3+KOT0tD4flBHwf0O/86pdm+nSlG4r4bkqjIIJwv7A Wh6k5VwgS8TcsavzarNhTYBAWQoQr4JEQepXCLx2k/r14lKFyzu4+/eFhwF1CQ26 jmRlp0Lo2u3RQanVMsshfLh54ET2Fj3nX3cSTHxWbR3E1knI9A1qlpoElElNpBAG JePN22H09pT6qwlBcPaSkIrf/9SNp1n5hY76gEV9fzo6OlbEZQ3V5uD0OY0EzVCn dcvRslDiWqzCZjKylk93rIzxFrYAFq9G4luhpg/slVcTAgMBAAE= -----END PUBLIC KEY-----
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 -----BEGIN RSA PRIVATE KEY----- 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 -----END RSA PRIVATE KEY-----






Répondre avec citation

Partager