【问题标题】:How to Encrypt data in React native (Using Expo)如何在 React Native 中加密数据(使用 Expo)
【发布时间】:2020-06-29 05:01:04
【问题描述】:

我正在尝试使用给定的密钥和 iV 简单地加密消息。我已经尝试了几个库来实现这一点,但 Expo 与它们中的任何一个都不兼容。我找不到任何 Expo 加密库(支持 AES)。我想我的问题是:如何在运行 Expo 的 React Native 中加密数据

Ps : 我对expo-crypto不感兴趣

【问题讨论】:

  • 你不能使用像crypto-js这样的纯js库吗?
  • @LonelyCpp 与博览会无关。它产生以下错误:“node_modules/crypto-js/core.js”中的包试图导入 Node 标准库模块“crypto”。它失败了,因为 React Native 不包含 Node 标准库。在docs.expo.io/versions/latest/introduction/faq/… 阅读更多内容,构建 JavaScript 包失败。

标签: reactjs react-native encryption aes expo


【解决方案1】:

另一种可能性(我所做的)是使用 CryptoES 库。

https://www.npmjs.com/package/crypto-es

找了很久才找到,是3.1版本的CryptoJS库的继续开发,可以和Expo一起使用。

【讨论】:

  • 您对使用 AES-GCM 有什么想法吗? crypto-es 不支持 GCM 模式。
【解决方案2】:

使用 crypto-js@3.1 ,3.1.x 版本使用 Math.random() 并且不需要节点“crypto”包。它不如最新版本安全,但对我有用。

yarn add crypto-js@3.1 

我只用它来解密。如果您确实需要它来满足某些安全要求,我建议您在服务器节点环境中对其进行加密。

【讨论】:

  • 需要注意的是,这有一个严重的安全漏洞,很容易受到密码攻击。 npm audit 应该显示这个。
【解决方案3】:
npm i --save crypto-es crypto-js 
import CryptoES from "crypto-es";

那么你应该加密文本,例如:

var mytexttoEncryption = "Hello" 
const encrypted = CryptoES.AES.encrypt(mytexttoEncryption ,"your password").toString();

var C = require("crypto-js");

var Decrypted = C.AES.decrypt(E, "your password");
var result =Decrypted.toString(C.enc.Utf8);

console.log(result)

【讨论】:

    【解决方案4】:

    我决定在我的 React-native & Expo 项目中使用jshashes。这个模块的目标是在不依赖节点的情况下,用纯javascript重新实现哈希节点的加密函数:

    yarn add jshashes
    

    【讨论】:

      【解决方案5】:

      首先使用这个命令:

      npm i crypto-es 
      

      那么现在你应该用这个命令导入它:

      import CryptoES from "crypto-es";
      

      那么你应该加密文本: 例如:

      var mytexttoEncryption = "Hello" 
      const encrypted = CryptoES.AES.encrypt(mytexttoEncryption ,"your password").toString();
      

      现在进行解密: 用这个命令安装crypto-js的包:

      npm i crypto-js 
      

      然后让我们解密

      var C = require("crypto-js");
      
       var Decrypted = C.AES.decrypt(E, "your password");
      var result =Decrypted.toString(C.enc.Utf8);
      
      console.log(result)
      

      这样就可以了

      【讨论】:

      • expo-crypto 文档不好,但你可以使用 crypto-es,它很好,你可以使用一些库(如 crypto-js 等)轻松解密它
      • 不知道他们会不会很快支持aes gcm模式?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-12
      • 2022-11-24
      • 2020-10-20
      相关资源
      最近更新 更多