Какая библиотека rsa рекомендуется для платформы «react native»?

#javascript #node.js #react-native

#javascript #node.js #react-native

Вопрос:

Какая библиотека rsa рекомендуется для платформы «react native» с поддержкой Android?

Спасибо

Редактировать:

Я пытался 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=androidamp;dev=trueamp;hot=falseamp;minify=false' }  
  

Комментарии:

1. Можете ли вы указать, в какой строке возникает ошибка?

2. В этой строке возникает ошибка: var decrypted = rsa.decrypt(зашифрованный);

3. Проверьте encrypted var перед вызовом этой функции. Похоже, что оно равно нулю.

4. Я проверил это. encryped != null

5. Пожалуйста, обратите внимание, что я пытаюсь зашифровать с помощью PrivateKey и расшифровать с помощью publicKey .

Ответ №1:

Попробуйте react-native-rsa , он прост в использовании и будет поддерживать платформу Android.

Сначала установите библиотеку с помощью 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
  

Encript:

 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

Комментарии:

1. это не сработает, если мне придется использовать уже сгенерированный открытый ключ, который я получаю от API

Ответ №2:

Используйте этот пакет по мере его обновления: react-native-rsa-native

Ответ №3:

Попробуй это https://github.com/jerson/rsa-mobile Машинный код, используемый в react-native-fast-rsa и flutter-rsa

Комментарии:

1. Пожалуйста, добавьте больше деталей, подтверждающих ваш ответ.