鉴于私钥的重要性,我们需要以一种安全地方式保存它,而不是简单地 存到一个文件里。
keystore
允许你用加密的方式存储密钥。这是安全性(一个攻击者需要 keystore 文件和你的钱包口令才能盗取你的资金)和可用性(你只需要 keystore 文件和钱包口令就能用你的钱了)两者之间完美的权衡。
下图是一个keystore文件的内容:
从图中可以看出,keystore的生成使用了两重算法:首先使用你指定的钱包口令 采用kpf参数约定的算法生成一个用于AES算法的密钥,然后使用该密钥 结合ASE算法参数iv对要保护的私钥进行加密。
由于采用对称加密算法,当我们需要从keystore中恢复私钥时,只需要 使用生成该钱包的密码,并结合keystore文件中的算法参数,即可进行 解密出你的私钥。
这一部分我们直接基于nebulasio 的实现代码进行简单封装,得到KeyStore实现类,它有两个静态方法:
- KeyStore::save($privateKey,$pass,$walletDir)
- KeyStore::load($pass,$walletFile)
例如,下面的代码使用口令123
将私钥存入./keystore
目录,并返回钱包文件名:
$wfn = EthTool\KeyStore::save('0x19092...','123','./keystore');
echo 'wallet file: ' . $wfn . PHP_EOL;
下面的代码使用口令123
从钱包文件恢复出私钥:
$privateKey = EthTool\KeyStore::load('123','./keystore/1b71...');
echo 'private key: ' . $privateKey . PHP_EOL;
搜索
标签
study
ab
amap
apache
apahe
awk
aws
bat
centos
CFS
chrome
cmd
cnpm
composer
consul
crontab
css
curl
cygwin
devops
di
docker
docker,docker-compose
ethereum
excel
fiddler
fluentd
framework
front-end
git
gitgui
github
glide
go
golang
gorm
grafana
gzip
ioc
item2
iterm2
javascript
jenkins
jsonp
kafka
laradock
laravel
larval
linux
liunux
log
mac
mac, wi-fi
macos
magento
mariaDB
minikube
mongoDB
msp
mysql
netbeans
nginx
nodejs
nohup
npm
nsq
oracle
php
php-fpm
php7
phpstorm
php扩展
Protobuf
python
redis
scp
server
shell
soap
socket
socket5
sql
sre
ssdb
ssh
ssl
study
sublime
swift
system
td-agent
uml
v2ray
vagrant
vagrnat
vim
vpn
vue
vue.js
webpack
webrtc
websocket
webtatic
windows
windows7
word
wps
xdebug
yarn
yii2
yum
zookeeper
世界国家
互联网
以太坊
分类
前端
小程序
打印机
排序算法
搞笑
权限
粤语
缓存
网络
虚拟机
视频
设计模式
项目管理
热门文章
友情链接