Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用forge加密和解密pdf blob并将其存储在localStorage中?_Javascript_Angularjs_Encryption_Local Storage_Forge - Fatal编程技术网

Javascript 如何使用forge加密和解密pdf blob并将其存储在localStorage中?

Javascript 如何使用forge加密和解密pdf blob并将其存储在localStorage中?,javascript,angularjs,encryption,local-storage,forge,Javascript,Angularjs,Encryption,Local Storage,Forge,我正在尝试加密一块pdf文件并将其存储在localStorage中,然后在脱机时读取并解密它 我的应用程序是用AngularJS编写的,加密是用 以下是我下载pdf文件的代码: $http.get(url、{ 标题:{ “应用程序授权”:appContext.user.token }, 响应类型:“blob” }).然后(功能(响应){ backendCipherService.encryptPDF(response.data,appContext.user.password)。然后(函数(数

我正在尝试加密一块pdf文件并将其存储在localStorage中,然后在脱机时读取并解密它

我的应用程序是用AngularJS编写的,加密是用

以下是我下载pdf文件的代码:

$http.get(url、{
标题:{
“应用程序授权”:appContext.user.token
},
响应类型:“blob”
}).然后(功能(响应){
backendCipherService.encryptPDF(response.data,appContext.user.password)。然后(函数(数据){
$localfough.setItem(“document:”+document.documentId+“::pdf”,data.json)。然后(函数(成功){
log(“缓存的pdf”,document.documentId);
延迟。解决();
},函数(错误){
console.log(“错误”、response.data、document.documentName);
延迟。拒绝(错误);
});
});
},函数(错误){
延迟。拒绝(错误);

});
您的
decryptPDF
函数返回一个二进制编码字符串,这是forge v0.6.x使用的本机格式。要将其转换回Uint8Array,请执行以下操作:

decipher.finish();
return s2a(decipher.output.getBytes());

function s2a(str) {
    var view = new Uint8Array(str.length);
    for (var i = 0, j = str.length; i < j; i++) {
        view[i] = str.charCodeAt(i);
    }
    return view;
}
破译.finish();
返回s2a(decipher.output.getBytes());
功能s2a(str){
var视图=新的Uint8Array(str.length);
对于(变量i=0,j=str.length;i
您还应该检查
decipher.finish()
的返回值,以确保它是
true
。否则,解密可能失败