我需要使用React Native计算Android和iOS中许多文件的SHA256哈希值。 当用户选择文件时,我的应用程序将开始计算每个文件的 SHA256。
对于网页,我一直在使用 crypto-js。 但对于 Andoid 和 iOS 应用程序,我担心 crypto-js 的性能可能不够快,因为文件(例如视频文件)可能 >400 MB。
有什么办法可以调用Android/iOS原生api来计算SHA256,而不是为了性能而使用crypto-js?
react-native 本身没有内置任何东西来本地计算 sha-256,但有一些选项。
正如@Morre指出的,react-native-sha256是一个开源项目,支持使用本机组件计算字符串的sha-256。
另一个开源react-native项目 - react-native-fs - 支持使用本机组件计算文件的sha-256,特别是hash函数。
正如 @Morre 所指出的,如果您愿意,您可以编写自己的本机代码来提供相同的功能。我在这里提到的两个库都是开源的,因此其中的源代码可以为需要编写的特定 Android/iOS 代码提供很好的参考。 StackOverflow 上还有 java 和 swift 的代码示例。 React-Native 的本机模块文档 (Android) 和 iOS 非常广泛。
如果有人在 2024 年仍然关注同样的问题并使用 Expo,您可以尝试 Expo Crypto:https://docs.expo.dev/versions/latest/sdk/crypto/
const sha256Text = await Crypto.digestStringAsync(
Crypto.CryptoDigestAlgorithm.SHA256,
'Example text');