Javascript 如何使用forge加密和解密pdf blob并将其存储在localStorage中?
我正在尝试加密一块pdf文件并将其存储在localStorage中,然后在脱机时读取并解密它 我的应用程序是用AngularJS编写的,加密是用 以下是我下载pdf文件的代码: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)。然后(函数(数
$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
。否则,解密可能失败