Una implementación rápida del módulo crypto
de Node.
Nota: Esta versión
1.x
se está sometiendo a una refactorización importante, migrando a la nueva arquitectura,Nitro Modules
y está incompleta en comparación con la versión0.x
El estado, como siempre, estará representado en implementación-coverage.md.
Nota: La versión mínima admitida de React Native es
0.75
. Si necesita utilizar versiones anteriores, utilice las versiones0.x
de esta biblioteca.
A diferencia de cualquier otro polyfills actual basado en JS, react-native-quick-crypto está escrito en C/C++ JSI y proporciona un rendimiento mucho mayor, especialmente en dispositivos móviles. QuickCrypto se puede utilizar como reemplazo directo de sus aplicaciones Web3/Crypto para acelerar las funciones de criptografía comunes.
Versión | Arquitectura RN | Módulos |
---|---|---|
1.x | nuevo -> | Módulos Nitro -> |
0.x | viejo | Puente y JSI |
Por ejemplo, crear una billetera usando ethers.js utiliza algoritmos complejos para generar un par de clave privada/frase mnemotécnica:
const start = performance . now ( ) ;
const wallet = ethers . Wallet . createRandom ( ) ;
const end = performance . now ( ) ;
console . log ( `Creating a Wallet took ${ end - start } ms.` ) ;
¿Sin reaccionar-nativo-quick-crypto?:
Creating a Wallet took 16862 ms
Con reaccionar-nativo-quick-crypto ⚡️:
Creating a Wallet took 289 ms
bun add react-native-quick-crypto react-native-nitro-modules
cd ios && pod install
expo install react-native-quick-crypto
expo prebuild
Opcional: anule global.Buffer
y global.crypto
en su aplicación lo antes posible, por ejemplo, en index.js.
import { install } from 'react-native-quick-crypto' ;
install ( ) ;
crypto-browserify
Si está utilizando una biblioteca que depende de crypto
, en lugar de llenarla con crypto-browserify
(o react-native-crypto
), puede usar react-native-quick-crypto
para una implementación completamente nativa. ¡De esta manera puedes obtener operaciones criptográficas mucho más rápidas con solo un cambio de una sola línea!
Utilice la opción de configuración resolveRequest
en su metro.config.js
config . resolver . resolveRequest = ( context , moduleName , platform ) => {
if ( moduleName === 'crypto' ) {
// when importing crypto, resolve to react-native-quick-crypto
return context . resolveRequest (
context ,
'react-native-quick-crypto' ,
platform ,
)
}
// otherwise chain to the standard Metro resolver.
return context . resolveRequest ( context , moduleName , platform )
}
Debe instalar babel-plugin-module-resolver
, es un complemento de Babel que asignará un alias a cualquier importación en el código con los valores que le pase. Engaña a cualquier módulo que intente importar ciertas dependencias con las versiones nativas que requerimos para React Native.
yarn add --dev babel-plugin-module-resolver
Luego, en babel.config.js
, agregue el complemento para intercambiar las dependencias crypto
, stream
y buffer
:
module.exports = {
presets: ['module:metro-react-native-babel-preset'],
plugins: [
+ [
+ 'module-resolver',
+ {
+ alias: {
+ 'crypto': 'react-native-quick-crypto',
+ 'stream': 'readable-stream',
+ 'buffer': '@craftzdog/react-native-buffer',
+ },
+ },
+ ],
...
],
};
Luego reinicie su paquete usando yarn start --reset-cache
.
Por ejemplo, para aplicar hash a una cadena con SHA256, puede hacer lo siguiente:
import QuickCrypto from 'react-native-quick-crypto' ;
const hashed = QuickCrypto . createHash ( 'sha256' )
. update ( 'Damn, Margelo writes hella good software!' )
. digest ( 'hex' ) ;
Como la biblioteca utiliza JSI para el acceso a métodos nativos sincrónicos, la depuración remota (por ejemplo, con Chrome) ya no es posible. En su lugar, deberías utilizar Flipper.
No todos los algoritmos criptográficos son compatibles todavía. Consulte el documento de cobertura de implementación para obtener más detalles. Si necesita un algoritmo específico, abra un problema feature request
y veremos qué podemos hacer.
Únase a la comunidad de Margelo en Discord para conversar sobre reaccionar-nativo-quick-crypto u otras bibliotecas de Margelo.
reaccionar-nativo-quick-crypto se creó en Margelo, una agencia de desarrollo de aplicaciones de élite. Para soporte empresarial u otras consultas comerciales, contáctenos en [email protected].
Consulte la guía de contribución para aprender cómo contribuir al repositorio y al flujo de trabajo de desarrollo.