Node의 crypto
모듈을 빠르게 구현합니다.
참고: 이 버전
1.x
새로운 아키텍처, 브리지리스 및Nitro Modules
로 포팅하는 주요 리팩터링을 진행 중이며0.x
버전에 비해 불완전합니다. 상태는 항상 그렇듯이implementation-coverage.md에 표시됩니다.
참고: React Native의 최소 지원 버전은
0.75
입니다. 이전 버전을 사용해야 하는 경우 이 라이브러리의0.x
버전을 사용하세요.
현재의 다른 JS 기반 폴리필과 달리, React-native-quick-crypto는 C/C++ JSI로 작성되었으며 특히 모바일 장치에서 훨씬 뛰어난 성능을 제공합니다. QuickCrypto는 일반적인 암호화 기능의 속도를 높이기 위해 Web3/Crypto 앱의 드롭인 대체품으로 사용할 수 있습니다.
버전 | RN 아키텍처 | 모듈 |
---|---|---|
1.x | 새로운 -> | 니트로 모듈 -> |
0.x | 오래된 | 브릿지 & JSI |
예를 들어 ethers.js를 사용하여 지갑을 만들면 복잡한 알고리즘을 사용하여 개인 키/니모닉 문구 쌍을 생성합니다.
const start = performance . now ( ) ;
const wallet = ethers . Wallet . createRandom ( ) ;
const end = performance . now ( ) ;
console . log ( `Creating a Wallet took ${ end - start } ms.` ) ;
반응 네이티브 빠른 암호 없이 ?:
Creating a Wallet took 16862 ms
반응 네이티브-빠른 암호화 ⚡️ 를 사용하면 :
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
선택사항: index.js와 같이 애플리케이션에서 global.Buffer
및 global.crypto
가능한 한 빨리 재정의하세요.
import { install } from 'react-native-quick-crypto' ;
install ( ) ;
crypto-browserify
교체 crypto
에 의존하는 라이브러리를 사용하는 경우 crypto-browserify
(또는 react-native-crypto
)로 폴리필하는 대신 완전한 네이티브 구현을 위해 react-native-quick-crypto
사용할 수 있습니다. 이렇게 하면 단 한 줄의 변경만으로 훨씬 더 빠른 암호화 작업을 수행할 수 있습니다!
metro.config.js
에서 resolveRequest
구성 옵션을 사용하세요.
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 )
}
babel-plugin-module-resolver
설치해야 합니다. 이는 전달한 값으로 코드의 모든 가져오기에 별칭을 지정하는 바벨 플러그인입니다. 이는 React Native에 필요한 기본 버전으로 특정 종속성을 가져오려고 시도하는 모든 모듈을 속입니다.
yarn add --dev babel-plugin-module-resolver
그런 다음 babel.config.js
에서 crypto
, stream
및 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',
+ },
+ },
+ ],
...
],
};
그런 다음 yarn start --reset-cache
사용하여 번들러를 다시 시작하세요.
예를 들어 SHA256으로 문자열을 해시하려면 다음을 수행할 수 있습니다.
import QuickCrypto from 'react-native-quick-crypto' ;
const hashed = QuickCrypto . createHash ( 'sha256' )
. update ( 'Damn, Margelo writes hella good software!' )
. digest ( 'hex' ) ;
라이브러리는 동기식 기본 메소드 액세스를 위해 JSI를 사용하므로 원격 디버깅(예: Chrome 사용)은 더 이상 가능하지 않습니다. 대신 Flipper를 사용해야 합니다.
아직 모든 암호화 알고리즘이 지원되는 것은 아닙니다. 자세한 내용은 구현 범위 문서를 참조하세요. 특정 알고리즘이 필요한 경우 feature request
문제를 열면 우리가 무엇을 할 수 있는지 알아볼 것입니다.
Margelo Community Discord에 참여하여 React-native-quick-crypto 또는 기타 Margelo 라이브러리에 대해 이야기해 보세요.
React-native-quick-crypto는 엘리트 앱 개발 대행사인 Margelo에서 구축되었습니다. 기업 지원이나 기타 비즈니스 문의는 [email protected]로 문의하세요!
저장소 및 개발 워크플로에 기여하는 방법을 알아보려면 기여 가이드를 참조하세요.