-我已经成功执行了用户名的加密部分,并且- ionic v3应用程序中使用crypto-js设置-password值,将其捕获到-firebase-analytics中。
import { Component, Input } from "@angular/core";
class Model {
param1: string;
value:any;
myPassword = "my message 123";
function decrypt(this.someuservalue:any,this.somemailid:any){
const encrypted = CryptoJS.AES.encrypt(this.someuservalue,
myPassword).toString();
}
}
-也在firebase数据库中获得了加密值。
-但是现在要将其解密到另一个独立的javascript文件中,我无法执行此操作。 -这就是我要解密的方式
var decrypted = CryptoJS.AES.decrypt(cipher, value);
var plaintext = = decrypted.toString(CryptoJS.enc.Utf8);
-但我无法这样做, -任何帮助都将不胜感激。
-谢谢
-我已经尝试了
var cipher = "encrypted value from the above implemented encryption"
password = "my message 123";
var rawData = atob(cipher);
var iv = btoa(rawData.substring(0,16));
var crypttext = btoa(rawData.substring(16));
var plaintextArray = CryptoJS.AES.decrypt(
{
ciphertext: CryptoJS.enc.Base64.parse(crypttext),
salt: ""
},
CryptoJS.enc.Hex.parse(password),
{ iv: CryptoJS.enc.Base64.parse(iv) }
);
-和
var bytes = CryptoJS.AES.decrypt({
ciphertext: CryptoJS.enc.Utf8.parse(cipher)
}, password, {format: CryptoJS.format.Utf8 });
var plaintext = bytes.toString();
-两者似乎都不起作用。
答案 0 :(得分:1)
看看Sodium(libsodium.js)。
Sodium是一个现代,易于使用的软件库,用于加密,解密,签名,密码哈希等等。
它是NaCl的便携式,交叉编译,可安装,可打包的分支,具有兼容的API和扩展的API,以进一步提高可用性。
其目标是提供构建高级加密工具所需的所有核心操作。
钠是跨平台和跨语言的。它可以在各种编译器和操作系统上运行,包括Windows(使用MinGW或Visual Studio,x86和x86_64),iOS和Android。也提供Javascript和WebAssembly版本,并且完全受支持。所有常用编程语言的绑定均已提供并得到了良好的支持。
设计选择强调安全性和易用性。但是,尽管强调了高安全性,但与大多数实现相比,原语在整体上更快。
版本1.0.17已于2019年1月7日发布。
参考: