Ich habe einige Daten mit AES-GCM unter Verwendung von IE 11 unter Windows 10 verschlüsselt, aber die Entschlüsselung funktioniert nicht. Beispiel Verschlüsselung JS-Code:Entschlüsseln von Daten aus dem Ergebnis einer IE 11-Verschlüsselung mit AES-GCM
let plainText = new Uint8Array([1]);
let key;
let keyBuf = window.msCrypto.getRandomValues(new Uint8Array(32));
let iv = window.msCrypto.getRandomValues(new Uint8Array(12));
let additionalData = window.msCrypto.getRandomValues(new Uint8Array(16));
let encResult;
let importOp = window.msCrypto.subtle.importKey('raw',
keyBuf,
{ name: 'AES-GCM' },
false,
['encrypt', 'decrypt']);
importOp.oncomplete = function(e) {
key = e.target.result;
let encryptOp = window.msCrypto.subtle.encrypt({
name: 'AES-GCM',
iv: iv,
tagLength: 128,
additionalData: additionalData
}, key, plainText);
encryptOp.oncomplete = function (e) {
encResult = e.target.result;
};
};
Das resultierende Element (encResult) ein AesGcmEncryptResult, die den verschlüsselten Wert und den Tag in 2 verschiedenen Eigenschaften aufweisen. Wie ich es verstehe, muss ich diese verketten und sie als Chiffretext übergeben zu entschlüsseln, wie in:
let cipherText = new Uint8Array(plainText.length + 16); // tagLength/8
cipherText.set(new Uint8Array(encResult.ciphertext), 0);
cipherText.set(new Uint8Array(encResult.tag), plainText.length);
let decryptOp = window.msCrypto.subtle.decrypt({
name: 'AES-GCM',
iv: iv,
tagLength: 128,
additionalData: additionalData
}, key, cipherText);
ich dann onComplete und onerror und onerror Feuer verdrahten. Leider hat das Event-Objekt des IE nichts anderes zu sagen als type = "error".
Es gibt sehr wenig Informationen über das Netz zur Verwendung von AES-GCM in IE 11.
Bitte erzählen Sie mir nicht einen anderen Browser zu verwenden. Das alles funktioniert gut (aber anders) mit Chrome und Firefox. Ich versuche speziell, dies in IE 11 zu arbeiten.
Was vermisse ich?