我们大致如下进行密钥加密/解密。
密钥创建和加密为密钥库
var key = Nethereum.Signer.EthECKey.GenerateKey();
var service = new Nethereum.KeyStore.KeyStoreService();
var keyStore = service.EncryptAndGenerateDefaultKeyStoreAsJson(
password, key.GetPrivateKeyAsBytes(), key.GetPublicAddress());
从密钥库恢复密钥以创建EthECKey
var service = new Nethereum.KeyStore.KeyStoreService();
key = new Nethereum.Signer.EthECKey(
service.DecryptKeyStoreFromJson(password, keyStore),
true);
密钥加密似乎也需要很长时间,但我认为这很好,因为通常这只是第一次。
问题是来自密钥库的密钥恢复(在应用程序启动时总是需要)在我的机器上的UnityEditor(2017.3.1)上花费超过10秒(macbook pro pro 2015,16GB ram和2.6 GHz Intel Core i7,High Sierra),这会伤害用户体验。
如果我只是存储key.GetPrivateKey()
并执行new Nethereum.Signer.EthECKey(privateKey)
来恢复密钥,它会立即完成,所以我猜这是由于解密速度慢造成的。
所以问题是: