我需要通过网页为外部平台交换一系列密钥,可能会发生用户没有配置使用HTTPS的SSL证书,以便在开始传输之前以安全的方式执行此操作我发送确认代码用户邮箱,用这段代码我生成一个SHA-256哈希(用PHP和HTML5加密API完成),我用这个键作为AES-256(CBC)加密字符串的密钥,之后我把它转换成base64并发送到客户端,将其转换为文件并触发下载。问题是我无法将组件(IV连接到加密字符串)转换为JavaScript请求的格式。这里是解密代码:
string = window.atob(string);
promise_key = window.crypto.subtle.generateKey({name: "AES-CBC", length: 256}, false, ["decrypt"]);
promise_key.then(function(key){
key_object = key;
var vector = string.substr(0, 16);
string = string.substr(16);
decrypt_promise = window.crypto.subtle.decrypt({name: "AES-CBC", iv: vector, length: 256}, key_object, string);
decrypt_promise.then(function(result){
decrypted_data = new Uint8Array(result);
console.log(decrypted_data);
});
});
过程: