2

J'ai été incapable de trouver des exemples de cryptage RSA-OAEP dans IE11.Cryptage RSA-OEP dans ie11

Voici un extrait de ma mise en œuvre, dans lequel je reçois une erreur très vague.

function convertStringToArrayBufferView(str) { 
 
     var bytes = new Uint8Array(str.length); 
 
     for (var iii = 0; iii < str.length; iii++) { 
 
     bytes[iii] = str.charCodeAt(iii); 
 
     } 
 

 
     return bytes; 
 
    } 
 

 
    
 
    var crypto = window.crypto || window.msCrypto; 
 
    var config = { 
 
     name: 'RSA-OAEP', 
 
     modulusLength: 2048, 
 
     publicExponent: new Uint8Array([0x01, 0x00, 0x01]), 
 
     hash: { 
 
     name: 'SHA-256' 
 
     } 
 
    }; 
 

 
    var keyOp = crypto.subtle.generateKey(config, false, ['encrypt', 'decrypt']); 
 
    keyOp.onerror = function(e) { 
 
     console.error(e); 
 
    }; 
 
    keyOp.oncomplete = function(e) { 
 
     encrypt(e.target.result); 
 
    }; 
 

 
    function encrypt(keypair) { 
 
     var data = "abc1234444" 
 

 
     var encOp = crypto.subtle.encrypt({ 
 
     name: config.name, 
 
     iv: config.iv || crypto.getRandomValues(new Uint8Array(16)), 
 
     key: keypair.publicKey 
 
     }, keypair.publicKey, convertStringToArrayBufferView(data)); 
 

 
     encOp.onerror = function(e) { 
 
     console.error(e); 
 
     }; 
 
     encOp.oncomplete = function(e) { 
 
     console.log({ 
 
      data: new Uint8Array(e.target.result) 
 
     }); 
 
     }; 
 
    }

Quand je change l'algorithme de RSAES-PKCS1-v1_5, tout fonctionne parfaitement

function convertStringToArrayBufferView(str) { 
 
     var bytes = new Uint8Array(str.length); 
 
     for (var iii = 0; iii < str.length; iii++) { 
 
     bytes[iii] = str.charCodeAt(iii); 
 
     } 
 

 
     return bytes; 
 
    } 
 

 
    
 
    var crypto = window.crypto || window.msCrypto; 
 
    var config = { 
 
     name: 'RSAES-PKCS1-v1_5', 
 
     modulusLength: 2048, 
 
     publicExponent: new Uint8Array([0x01, 0x00, 0x01]), 
 
     hash: { 
 
     name: 'SHA-256' 
 
     } 
 
    }; 
 

 
    var keyOp = crypto.subtle.generateKey(config, false, ['encrypt', 'decrypt']); 
 
    keyOp.onerror = function(e) { 
 
     console.error(e); 
 
    }; 
 
    keyOp.oncomplete = function(e) { 
 
     encrypt(e.target.result); 
 
    }; 
 

 
    function encrypt(keypair) { 
 
     var data = "abc1234444" 
 

 
     var encOp = crypto.subtle.encrypt({ 
 
     name: config.name, 
 
     iv: config.iv || crypto.getRandomValues(new Uint8Array(16)), 
 
     key: keypair.publicKey 
 
     }, keypair.publicKey, convertStringToArrayBufferView(data)); 
 

 
     encOp.onerror = function(e) { 
 
     console.error(e); 
 
     }; 
 
     encOp.oncomplete = function(e) { 
 
     console.log({ 
 
      data: new Uint8Array(e.target.result) 
 
     }); 
 
     }; 
 
    }

+1

Tu es assez vague sur l'erreur * vague *. Qu'Est-ce que c'est? –

+0

** Erreur **. Si je creuse un peu plus profondément dans l'objet, alors je trouverai un message ** Unable to get property 'de référence non défini ou nul ** mais je ne suis pas convaincu que cela ait quelque chose à voir avec le problème ici. S'il vous plaît laissez-moi savoir si vous ne rencontrez pas le même problème dans IE11 lorsque vous exécutez l'extrait de code ci-dessus. – chimon

Répondre

0

Ce problème ressemble à Public key encryption in Internet Explorer 11

Il, @fenghuang nécessaire « pour ajouter le champ de hachage lors de l'appel à l'appel Encrypt »

var encOp = cryptoSubtle.encrypt(
     { 
      name: "RSA-OAEP", 
      hash: { name: "SHA-256" } 
     }, 
     key.publicKey, 
     data 
    );