A Password Based Key Derivation 2 (PBKDF2) algorithm for React Native
PBKDF2 (Password-Based Key Derivation Function 2) are key derivation functions with a sliding computational cost, aimed to reduce the vulnerability of encrypted keys to brute force attacks.
PBKDF2 applies a pseudorandom function, such as hash-based message authentication code (HMAC), to the input password or passphrase along with a salt value and repeats the process many times to produce a derived key, which can then be used as a cryptographic key in subsequent operations. The added computational work makes password cracking much more difficult, and is known as key stretching.
The motivation for create this lib is to make a isolated and native way to use PBKDF2 algorithm in React Native. Because it's more simple to usage and maintain. The existent libs today or are not using native code or don't keep a semantic, isolated and clean usage.
The lib PublicaIO/react-native-pbkdf2, for example, not use the native code and the react-native-aes contain some other methods
This lib is totally based on react-native-aes, but with some improvements like
iteration
param suppport.
$ yarn add https://github.com/quan-to/react-native-pbkdf2
$ react-native link react-native-pbkdf2
- In XCode, in the project navigator, right click
Libraries
➜Add Files to [your project's name]
- Go to
node_modules
➜react-native-pbkdf2
and addRNPBKDF2.xcodeproj
- In XCode, in the project navigator, select your project. Add
libRCTPBKDF2.a
to your project'sBuild Phases
➜Link Binary With Libraries
- Run your project (
Cmd+R
)<
- Open up
android/app/src/main/java/[...]/MainActivity.java
- Add
import rnpbkdf2.PBKDF2Package;
to the imports at the top of the file - Add
new PBKDF2Package()
to the list returned by thegetPackages()
method
- Append the following lines to
android/settings.gradle
:include ':react-native-pbkdf2' project(':react-native-pbkdf2').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-pbkdf2/android')
- Insert the following lines inside the dependencies block in
android/app/build.gradle
:compile project(':react-native-pbkdf2')
import PBKDF2 from 'react-native-pbkdf2'
PBKDF2.derivationKey('P4S5W0RD', '032145', 10000)
.then((derivationKey) => console.log(derivationKey))
.catch(...)