Bonjour à tous,

dans le cadre de mon projet de fin d'étude, je teste les methodes de cryptage et decryptage symétrique et asymétrique du Bouncycastle.
Je teste á présent le PSS padding qui est effectué par le PSSSigner avec la fonction de hachage SHA1.
La signature est vérifiée par la méthode verifySignature, et SHA1 ne me permet pas de voir le padding.
Je crois que je dois créer une fonction de hachage transparante, mais je ne sais pas trop comment l'implémenter.
je n'ai que des zéros.

voici mon code avec SHA1 où je démasque la signature:

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
RSABlindingParameters params = new RSABlindingParameters(pub, blindFactor);
        // creer le blindingE
        RSABlindingEngine rsaBlindingEngine = new RSABlindingEngine();
        //creer le blindingSigner
        PSSSigner blindingSigner = new PSSSigner(rsaBlindingEngine, new SHA1Digest(), 1);
        // creer le rsaSigner
        PSSSigner rsaSigner = new PSSSigner(new RSAEngine(), new SHA1Digest(), 1);
        // initialiser blindingSigner
        blindingSigner.init(true, new ParametersWithRandom(params,new SecureRandom()));
        blindingSigner.update(msg, 0, msg.length);
        // blinding Signature
        byte[] blindingSignature = blindingSigner.generateSignature();
        System.out.println("Signature masquée: " + emsa.arrayToString(blindingSignature));
        // creer le rsaEngine
        RSAEngine rsaEngine = new RSAEngine();
        // initialiser le rsaEngine
        rsaEngine.init(true, prv);
        byte[] blindedData = rsaEngine.processBlock(blindingSignature, 0, blindingSignature.length);
        //initialiser le rsaBlindingE pour demasquer la signature
        rsaBlindingEngine.init(false, params);
        byte[] signature = rsaBlindingEngine.processBlock(blindedData, 0, blindedData.length);
        System.out.println("Signature demasquée: " + emsa.arrayToString(signature));
        RSABlindedEngine rsaBlindedEngine = new RSABlindedEngine();
        rsaBlindedEngine.init(true, pub);
        byte[] dbMask = rsaBlindedEngine.processBlock(signature, 0, signature.length);
        System.out.println("Le dbMask       : " + emsa.arrayToString(dbMask));
        rsaSigner.init(false, pub);
        rsaSigner.update(msg, 0, msg.length);
        boolean verif = rsaSigner.verifySignature(signature);
        Assert.assertTrue(verif);
Et voici mon output:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Signature masquée: 83 C9 08 E4 CF 0F AB DB F5 CC 07 FA 23 C9 2C 32 48 1E BA 4A 07 04 A5 75 CF 51 EC E1 B8 3A 44 F5 
Signature demasquée: 41 FD 12 2C D4 3C 05 83 D8 DE 29 0B 2C 08 42 49 33 D9 66 2F 9A 68 F8 32 7F 37 BB D3 D9 E0 E7 7D 
Le dbMask       : 45 C3 D9 CC 92 3E 10 05 E0 B5 CB FF FC 65 31 26 A0 9B F4 85 91 A3 77 88 93 64 27 D2 0B FB 29 BC