Node crypto
模組的快速實作。
注意:此版本
1.x
正在進行重大重構,移植到新架構、Bridgeless 和Nitro Modules
,與0.x
版本相比並不完整。與往常一樣,狀態將在implementation-coverage.md 中表示。
注意:React Native 支援的最低版本是
0.75
。如果您需要使用早期版本,請使用該程式庫的0.x
版本。
與目前任何其他基於 JS 的 polyfill 不同,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.` ) ;
沒有react-native-quick-crypto?
Creating a Wallet took 16862 ms
使用react-native-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
可選:儘早覆蓋應用程式中的global.Buffer
和global.crypto
例如在index.js中。
import { install } from 'react-native-quick-crypto' ;
install ( ) ;
crypto-browserify
如果您使用的函式庫依賴crypto
,則可以使用react-native-quick-crypto
來實現完全本機實現,而不是使用crypto-browserify
(或react-native-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
,它是一個 babel 插件,它將用你傳遞給它的值來別名代碼中的任何導入。它會欺騙任何試圖匯入 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 社群 Discord 來討論 react-native-quick-crypto 或其他 Margelo 函式庫。
React-native-quick-crypto 是由精英應用程式開發機構 Margelo 建構的。如需企業支援或其他業務諮詢,請透過 [email protected] 與我們聯繫!
請參閱貢獻指南,了解如何為儲存庫和開發工作流程做出貢獻。