gpt4 book ai didi

react-native - 如何安全地保存 redux-persist-transform-encrypt key ?

转载 作者:行者123 更新时间:2023-12-04 13:31:05 26 4
gpt4 key购买 nike

我正在尝试坚持并加密我的 native 应用程序的 redux 存储。
我正在尝试使用 redux-persist-transform-encrypt根据文档:

import { persistReducer } from 'redux-persist'
import createEncryptor from 'redux-persist-transform-encrypt'

const encryptor = createEncryptor({
secretKey: 'my-super-secret-key'
})

const reducer = persistReducer(
{
transforms: [encryptor]
},
baseReducer
)
但重要的是找到一种安全的方式来存储“我的 super secret key ”。
我已经成功地从用户输入中得到它并用 react-native-keychain 保存它.
现在的问题是从钥匙串(keychain)中获取 key 的函数是异步的,我需要在商店初始化之前获取 key 。
结果看起来像这样
import { persistReducer } from 'redux-persist'
import createEncryptor from 'redux-persist-transform-encrypt'

const encryptionKey = // get the key here from the keychain before initiating the store

const encryptor = createEncryptor({
secretKey: encryptionKey
})

const reducer = persistReducer(
{
transforms: [encryptor]
},
baseReducer
)
有人对我有任何解决方法吗?

最佳答案

我也花了一些时间来解决这个问题。起初,我找到了一个不错的库,可以将生成的 key 保存到名为 react-native-sensitive-info 的钥匙串(keychain)中。 .之后我遇到了获取和设置生成的 key 是异步的问题。然后我发现 AsyncStorage 在 persistReducer 的配置中用作存储。有办法 - 让我们创建一个使用 react-native-sensitive-info 的存储.过了一会儿,我偶然发现了一个已经存在并且正在实现完全相同逻辑的库。就是这样-> redux-persist-sensitive-storage .
只需像这样使用它:

...
import createSensitiveStorage from 'redux-persist-sensitive-storage';

const appReducer = combineReducers(myReducers);

const persistConfig = {
key: 'root',
storage: createSensitiveStorage({
keychainService: 'myKeychain',
sharedPreferencesName: 'mySharedPrefs'
})
}

const persistedReducer = persistReducer(persistConfig, appReducer);
const store = createStore(persistedReducer, applyMiddleware(thunkMiddleware));
const persistor = persistStore(store);
...
就是这样!

关于react-native - 如何安全地保存 redux-persist-transform-encrypt key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64976487/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com