#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
Комментарии:
1. это не сработает, если мне придется использовать уже сгенерированный открытый ключ, который я получаю от API
Ответ №2:
Используйте этот пакет по мере его обновления: react-native-rsa-native
Ответ №3:
Попробуй это https://github.com/jerson/rsa-mobile Машинный код, используемый в react-native-fast-rsa и flutter-rsa
Комментарии:
1. Пожалуйста, добавьте больше деталей, подтверждающих ваш ответ.