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.dercat 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.dercat 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

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

  1. 蚂蚁区块链第9课 SSL/TLS工作原理及在蚂蚁BAAS中的应用

    1,摘要 辉哥在学习蚂蚁BAAS系统时,发现了一堆证书或者公私钥名称,包括trustCa,ca.crt,client.crt,client.key,pub.txt,MyPKCS12.p12等等文件,不 ...

  2. 蚂蚁区块链第11课 以租房积分管理系统为例讲透蚂蚁Solidity语言差异精要

    1,摘要 本文以住房租赁积分管理系统为例,给大家演示CLOUD IDE如何编译调试solidity智能合约,并以此为例,给大家分享以太坊SOLIDITY跟蚂蚁区块链SOLIDITY语言的差异点. 2, ...

  3. 蚂蚁区块链第13课 如何搭建一个DAPP应用(以姓名年龄为例)

    1,摘要 本文介绍如何使用Cloud IDE完成name-age智能合约的编译,获取其ABI和二进制码信息. 接着,本文介绍基于EXPRESS框架搭建的前端页面,完成已部署智能合约的调用,完成了相关功 ...

  4. 蚂蚁区块链第10课 可信计算及TEE硬件隐私合约链智能合约开发实践

    1,摘要 本文介绍可信计算分类INTEL SGX技术和ARM TRUSTZONE技术技术方案概要,以及应用INTEL SGX技术的蚂蚁区块链TEE硬件隐私链的智能合约开发实践. 2,可信计算和2种技术 ...

  5. 蚂蚁区块链第15课 JS SDK概述及API接口速查

    1,摘要 本文讲解蚂蚁BAAS的JavaScript SDK概述,说明JS SDK对应的API接口速查.其他语言包SDK参考官网其他章节说明即可. 2,JS SDK 说明 JavaScript SDK ...

  6. 蚂蚁区块链第22课 蚂蚁区块链溯源服务功能从开通到实现

    1. 摘要 本文介绍蚂蚁区块链溯源服务的特点,开通和配置流程,接入淘宝扫码的流程. 辉哥认为,区块链溯源要锚定实物和数字世界的关系,但各个环节又只能在各自平行线操作,很难做到绝对溯源.况且,蚂蚁溯源区 ...

  7. 蚂蚁区块链第7课 零知识证明隐私保护原理和蚂蚁BAAS接口调用实现

    1,摘要 本文试图普及隐私保护和零知识证明的相关技术知识,尝试使用更简单的描述来理解复杂的数学算法和技术原理.同时,也提供了蚂蚁区块链已经实现的隐私保护的接口函数说明. 本文涉及的专业知识有零知识证明 ...

  8. 蚂蚁区块链第20课 可信存证司法链从入门到实施

    1. 摘要 杭州互联网法院和司法区块链平台的技术建设方都是蚂蚁金服区块链.那么,如何借助蚂蚁的技术能力和服务能力,快速对接上司法链,便于后续打通存证/维权的闭环流程.本文介绍蚂蚁区块链可信存证的业务及 ...

  9. 蚂蚁区块链第12课 如何使用命令行编译工具solcjs编译Solidity智能合约?

    1,摘要 蚂蚁区块链合约平台支持 Solidity 智能合约,针对合约源代码的编译,可以直接通过蚂蚁区块链 Cloud IDE 合约开发环境进行合约编译.部署.测试和调试. 本文介绍由蚂蚁区块链平台提 ...

最新文章

  1. 安全性测试之认证授权
  2. StringUtils中 isNotEmpty 和isNotBlank的区别
  3. Editplus快捷键大全
  4. BugkuCTF–flag在index里
  5. 【人物】Paul Graham: 卑鄙的人一定失败
  6. 鸡肋还是革新——Blazor进WinForm
  7. python 图片背景前景分离_【绝了】用 Python 把朋友头像变表情包!
  8. 玩具(BZOJ-1307)
  9. SQL导入Excel数据时,数字中混有字符将导致数据丢失的解决办法
  10. HDOJ2003求绝对值
  11. jdbc 连接oracle 数据库格式
  12. 让Jayrock插上翅膀(加入输入输出参数注释,测试页面有注释,下拉框可以搜索)...
  13. win11电脑开机密码忘记了怎么办?
  14. vscode 程序员鼓励师_把软萌程序猿鼓励师装进VScode里?最强交互彩虹屁,GitHub2.5k星,爱上写代码...
  15. 大型即时通讯系统微信、陌陌架构分析全记录!
  16. VUCA时代的领导力开发
  17. Flutter中的圆角和圆形效果
  18. 替代触发器和系统触发器
  19. pip命令下载第三方依赖的彩色进度条的具体实现
  20. Egg 实现一个 mTime 时光网

热门文章

  1. 「ZBrush」学习ZB出来可以从事什么工作
  2. c语言道歉程序代码,C语言编程,请帮我填完整
  3. php聊天室发送表情,聊天室之表情发送
  4. html设置首页到尾页的按钮,AspNetPager里面的按钮(如:首页,上一页 下一页,尾页)如何更换为我想要的图片...
  5. scp 自定义端口号
  6. 男人帮所有手机铃声下载|左永邦手机铃声下载,顾小白手机铃声下载,米琪手机铃声下载,艾米手机铃声下载...
  7. 项目要求完成杀毒软件,可是为什么网上关于杀毒软件的资料那么少啊
  8. 根据上面的products列表写一个循环,不断询问用户想买什么,用户选择一个商品编号,就把对应的商品添加到购物车里,终用户输入q退出时,打印购买的商品列表。
  9. 音视频开发系列(46)运算符重载、继承、多态、模版
  10. cairo裁剪使用分析