【问题标题】:Which rsa library recommended for "react native" platform?哪个 rsa 库推荐用于“react native”平台?
【发布时间】:2017-02-14 04:33:23
【问题描述】:

哪个 rsa 库推荐用于支持 Android 的“react native”平台?

谢谢

编辑:

我试过react-native-rsa

var encrypted = '';
try {
  var RSAKey = require('react-native-rsa');
  const bits = 1024;
  const exponent = '10001';
  var rsa = new RSAKey();
  rsa.generate(bits, exponent);
  var publicKey = rsa.getPublicString(); 
  var privateKey = rsa.getPrivateString(); 
} catch (error) {
  console.log(1);
  console.log(error);
}

try {

  rsa = new RSAKey();
  rsa.setPrivateString(privateKey);
  var originText = 'Test 123 Test 321';
  encrypted = rsa.encrypt(originText);

} catch (error) {
  console.log(2);
  console.log(error);
}

try {
  rsa = new RSAKey();
  rsa.setPublicString(publicKey);
  var decrypted = rsa.decrypt(encrypted);
  console.log(decrypted);

} catch (error) {
  console.log(3);
  console.log(error);
}

但是我收到了这个错误:

I/ReactNativeJS( 9238): 3                                                                                                                                                                                  
I/ReactNativeJS( 9238): { [TypeError: null is not an object (evaluating 'e.bitLength')]                                                                                                                    
I/ReactNativeJS( 9238):   line: 96781,                                                                                                                                                                     
I/ReactNativeJS( 9238):   column: 8,                                                                                                                                                                       
I/ReactNativeJS( 9238):   sourceURL: 'http://10.0.3.2:8081/index.android.bundle?platform=android&dev=true&hot=false&minify=false' }  

【问题讨论】:

  • 您能否提供错误发生在哪一行?
  • 这一行出现错误:var decrypted = rsa.decrypt(encrypted);
  • 在此函数调用之前检查 encrypted var。它似乎为空。
  • 我查过了。 encryped != null
  • 请注意,我正在尝试使用 privateKey 加密使用 publicKey 解密

标签: javascript node.js react-native


【解决方案1】:

试试react-native-rsa,使用简单,支持安卓平台。

首先使用 Npm 安装库:

npm install react-native-rsa

生成 RSA 密钥:

var RSAKey = require('react-native-rsa');
const bits = 1024;
const exponent = '10001'; // must be a string
var rsa = new RSAKey();
var r = rsa.generate(bits, exponent);
var publicKey = rsa.RSAGetPublicString(); // return json encoded string
var privateKey = rsa.RSAGetPrivateString(); // return json encoded string

密码:

var rsa = new RSAKey();
rsa.setPublicString(publicKey);
var originText = 'sample String Value';
var encrypted = rsa.encrypt(originText);

说明:

rsa.setPrivateString(privateKey);
var decrypted = rsa.decrypt(encrypted); // decrypted == originText

参考:https://www.npmjs.com/package/react-native-rsa

【讨论】:

  • 如果我不得不使用从 API 收到的已经生成的公钥,它就不起作用
【解决方案2】:

使用这个包,因为它是更新:react-native-rsa-native

【讨论】:

    【解决方案3】:

    试试这个https://github.com/jerson/rsa-mobile react-native-fast-rsa和flutter-rsa中使用的原生代码

    【讨论】:

    • 请添加更多详细信息来支持您的回答。
    猜你喜欢
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-15
    • 2011-01-22
    • 1970-01-01
    • 2010-12-13
    • 2022-01-03
    相关资源
    最近更新 更多