修改Keystore文件密码



  • 看到开发文档里面提到使用的库 keythereum 就想尝试一下修改Keystore文件密码。基本上抄一下README的代码就搞定,只是读写Keystore文件的目录的操作不太直观

    代码如下

    var keythereum = require("keythereum");
    
    address= '3d8797a152d95b3f389182e25ceb3672e71b80c5'
    var datadir = "."
    var keyObject = keythereum.importFromFile(address, datadir); #导入原Keystore
    var password = "press1"; #原密码
    var privateKey = keythereum.recover(password, keyObject);
    console.log(privateKey.toString("hex")); #以十六进制形式输出私钥
    
    var params = { keyBytes: 32, ivBytes: 16 };
    var dk = keythereum.create(params);
    var password = "123456"; #新密码
    var options = {
      kdf: "pbkdf2",
      cipher: "aes-128-ctr",
      kdfparams: {
        c: 262144,
        dklen: 32,
        prf: "hmac-sha256"
      }
    };
    var keyObject = keythereum.dump(password, privateKey, dk.salt, dk.iv, options);
    keythereum.exportToFile(keyObject); #保存新的Keystore
    

    完整的项目在 https://github.com/blockchain-onlooker/ethereum_key_change_password

    PressOne_keystore文件的原密码是 press1

    运行之后会在keystore目录下生成一个新文件,把后缀修改成json,就可以用新密码 123456 登录 https://beta.press.one/login



  • 赞,我们已经计划在 Web 端支持修改密码,并且在开放 SDK 中提供此功能。