蚂蚁区块链第8课 如何创建新的账户,获取私钥和identity标识?

1,摘要

在创建TEE硬件隐私合约链(标准合约链)的时候,配套已经创建了一个证书对和2个公私钥对,对应了这1个账号(duncanwang)。不理解辉哥说什么的参考《蚂蚁区块链第4课 如何创建TEE硬件隐私合约链?》文章的描述。
但是,智能合约运行中,一般会涉及账户切换等操作,那就需要创建新的账户的需求了。
参考本文指导,辉哥完成了需要的4个新账户的创建,包括ella,ouyang,dingheng,daming账号。

2,本地创建公私钥对

2.1 蚂蚁BAAS的账户理解

大部分人理解以太坊的账户体系,一个以太坊地址包括一个公钥,一个私钥(加密过的),是固定的。但是在蚂蚁BAAS系统中,并不存在地址ADDRESS这个概念。它使用identity来表示账户体系,一个identity有2对公私钥对,其中一个是恢复公私钥对,想得挺周到的,双重防丢失。

2.2 本地运行密钥生成工具

蚂蚁BaaS 平台提供 Java 版本的本地密钥服务。辉哥在WINDOWS环境下操作测试完成。

  1. 准备 Java 运行环境,1.7 版本或以上。
  2. 下载密钥生成工具(点击此处 下载)。
  3. 运行命令 java -jar baas-crypto-tool-1.0.0.jar --server.port=8080 启动密钥服务。

服务运行截图

2.2 生成公私钥对

启动密钥服务之后,在浏览器中访问 http://localhost:8080/api/crypto/generateUserKey?algo=ec&isPkcs8=true&password=${password} 生成 userkey.zip 文件包。解压该 .zip 包后得到 user.keypub.txt。其中,user.key 为用户私钥(加密过的),pub.txt 中的内容为用户公钥。

注意:

目前生产公私钥对的密码要求比较严,必须包含大小写,数字和特殊字符,否则会有出错报警。例如{“errorMsg”:"must contains number,a-z,A-Z and *^&"} ,辉哥改为例如http://localhost:8080/api/crypto/generateTlsKey?algo=rsa&isPkcs8=true&password=2015Juban 以上告警才消失。
蚂蚁专家孙善禄说,后面生成密码限制改为要求宽松一点。

可以执行该命令两次,生成两个公私钥对,一个用做账户的公私钥对,另一个用做恢复该账户的公私钥对。
辉哥本地生成了2组公私钥对。

问:如何得到解密后的私钥你呢?
答:
在非WINDOWS环境下,例如UBUNTU环境下,采用第二步,第三步方法获得解密后的私钥。


//第一步:生成java sdk 可用的 user key文件
openssl ecparam -name secp256k1 -genkey | openssl pkcs8 -topk8 -v1 pbeWithSHA1And3-KeyTripleDES-CBC -passout pass:123abc -out user.key
//第二步:生成DER格式的key文件,临时使用
openssl ec -passin pass:123abc -in user.key -outform DER -out user.der
//第三步:得到公钥的16进制结果,去baas创建账户时候使用
cat user.der | xxd -p -c 1000 | sed 's/30740201010420/Private Key: /' | sed 's/a00706052b8104000aa14403420004/\'$'\nPublic Key: /'

3,创建新账号

在区块链创新大赛 > 赶紧去开发 > 管理 > 账户管理 页面,

创建新账号入口

点击“添加账号”按钮,其中的公钥对就是刚才生产的2个pub.txt文件里面的密码。

添加账号

注意:
(1)直接复制过来即可,不要加0x关键字哦;
(2)不同账号的公钥/恢复公钥可以重复;
所以辉哥一口气用相同的公钥/恢复公钥把所有需要的账号ella, ouyang, dingheng,daming全部创建好了。

4,如何生成账号的identity标识

蚂蚁区块链的identity类似于以太坊系统的ADDRESS,是链上唯一的表示,其是根据账号名称做sh256算法产生的。
例如,在站长工具网站http://tool.chinaz.com/tools/hash.aspx中输入账号名字duncanwang,获得其identity为0x4983bcbaf60b9c90dc9d9a0b38a8931aad9a444acaa2adcbc61c5e3e218c49e1

根据上面方法,得到以下角色的identity为
管理者 - test002 identity:
0xd6b1f9e8a0da740fa04245a41b78eba7be9214cf96e7f6594899706e64050d20
管理者 - ella identity:
0xfb2cb45b6b443241e38145b6445a6e0ebee0410d19e71d9fd0adf5fc382d49e5
操作员 - duncanwang identity:
0x4983bcbaf60b9c90dc9d9a0b38a8931aad9a444acaa2adcbc61c5e3e218c49e1
观察员 - ouyang identity:
0xe26ef3b9bb0244244935f0176e2e4b5b623be3634276ee897810a380ae8c1314
市民 - dingheng identity:
0xccaa69e5e5583f2e34885450669c518a6febcdec9040a4d0a2d41cd9f8f8ca40

5,如何生成解密的私钥信息?

在第2章中获得的user.key的私钥为加密后的私钥,不能用于CLOUD IDE切换账号时的私钥,需要转换为32字节的解密私钥才可以使用。
总的来说,在Ubuntu等linux环境下完成第2步,第3步就可以获得32字节的解密后私钥了。

//第一步:生成java sdk 可用的 user key文件
openssl ecparam -name secp256k1 -genkey | openssl pkcs8 -topk8 -v1 pbeWithSHA1And3-KeyTripleDES-CBC -passout pass:123abc -out user.key
//第二步:生成DER格式的key文件,临时使用
openssl ec -passin pass:123abc -in user.key -outform DER -out user.der
//第三步:得到公钥的16进制结果,去baas创建账户时候使用
cat user.der | xxd -p -c 1000 | sed 's/30740201010420/Private Key: /' | sed 's/a00706052b8104000aa14403420004/\'$'\nPublic Key: /'

用此方法,可以获得dunwang,ell等账号的解密私钥。

(1)dunwang
使用duncanwang_client.key文件,出来的私钥被辉哥篡改防泄漏。

openssl ec -passin pass:2015jusanban -in duncanwang-user.key -outform DER -out duncanwang-user.der

cat duncanwang-user.der | xxd -p -c 1000 | sed 's/30740201010420/Private Key: /' | sed 's/a00706052b8104000aa14403420004/\'$'\nPublic Key: /'

Private Key: 46f9c8c5037a92aefd811b350a42dc63591fb772ea2c104b89ccb48e1784c76c
Public Key: 90fbc786b3b51f78e2934e50ef58e26687f4125d7969de0d4aeeb2d4c2b607a3d58eacaaf75166ff15e6b62391d42a952c45574a3b1a617db3bd3edd549f5383

(2) ella/ouyang/dingheng
使用ella-user.key文件,出来的私钥被辉哥篡改防泄漏。

openssl ec -passin pass:2015Jusanban_ -in ella-user.key -outform DER -out ella-user.der


cat ella-user.der | xxd -p -c 1000 | sed 's/30740201010420/Private Key: /' | sed 's/a00706052b8104000aa14403420004/\'$'\nPublic Key: /'

Private Key: 2ac3bd8673454a6de00fc8915b5f2676084d2e6c74d3a0fdf34b5e63ead6e019
Public Key: 245139b08877a8bd128939ba397d63f229456d4a2cdd9ec9572d62ddc3b2955d8ba88974d8cef3309740f65c4a44bb80f9278e59ab01455f851ea734c84b27e8

6,参考

(1)合约链:本地生成证书请求和公私钥对
https://tech.antfin.com/docs/2/73764

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笔名辉哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值