无法使用ionic3应用程序中的crypto-js解密crypto-js中的加密值

时间:2019-05-07 22:49:06

标签: encryption cryptography ionic3 cryptojs

-我已经成功执行了用户名的加密部分,并且-  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();


-两者似乎都不起作用。

1 个答案:

答案 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日发布。

参考: