钱包地址、公私钥生成算法

公私钥生成的算法以及代码开源。钱包地址、公钥hash的生成方式

相关源码开源地址:研发人员加班打包创建中...

核心加密算法:

数字签名密钥算法:ECDSA,

椭圆曲线(EC)域参数设定:secp256k(比特币选择的也是该算法),

数字签名签名/验证算法:SHA512withECDSA;

Hash算法:SHA256、RIPEMD160算法(RACE原始完整性校验讯息摘要);

私钥说明

私钥字节总长度:144位(后68位为公钥的动态字节b)

例如私钥字节:

[48, -127, -115, 2, 1, 0, 48, 16, 6, 7, 42, -122, 72, -50, 61, 2, 1, 6, 5, 43, -127, 4, 0, 10, 4, 118, 48, 116, 2, 1, 1, 4, 32, 111, 96, -19, 42, -3, -105, -91, -46, -79, -82, -79, 108, 96, -37, 91, -23, -40, 102, -114, 2, 67, -70, -100, 102, 90, -29, -127, -120, 125, 66, -11, -90, -96, 7, 6, 5, 43, -127, 4, 0, 10, -95, 68, 3, 66, 0, 4, 88, -23, 4, 81, 31, 69, 102, 52, 32, -73, 15, -48, 56, -120, -58, 49, -34, 67, 76, 47, -73, 74, 123, -22, -67, 82, -125, -42, 108, 24, 116, 88, -88, 53, 105, 78, 123, -13, 116, 40, -92, 47, 1, 54, 101, -63, -125, 26, 22, 29, -120, -32, -89, -36, -107, -27, -119, -18, -77, -71, 69, 103, 47, 63]

转换为字符串:30818d020100301006072a8648ce3d020106052b8104000a0476307402010104206f60ed2afd97a5d2b1aeb16c60db5be9d8668e0243ba9c665ae381887d42f5a6a00706052b8104000aa1440342000458e904511f45663420b70fd03888c631de434c2fb74a7beabd5283d66c187458a835694e7bf37428a42f013665c1831a161d88e0a7dc95e589eeb3b945672f3f

公钥说明

公钥字节总长度:88位(前20位为固定字节a,后68位为公钥动态字节b)

例如公钥字节:

[48, 86, 48, 16, 6, 7, 42, -122, 72, -50, 61, 2, 1, 6, 5, 43, -127, 4, 0, 10, 3, 66, 0, 4, 88, -23, 4, 81, 31, 69, 102, 52, 32, -73, 15, -48, 56, -120, -58, 49, -34, 67, 76, 47, -73, 74, 123, -22, -67, 82, -125, -42, 108, 24, 116, 88, -88, 53, 105, 78, 123, -13, 116, 40, -92, 47, 1, 54, 101, -63, -125, 26, 22, 29, -120, -32, -89, -36, -107, -27, -119, -18, -77, -71, 69, 103, 47, 63]

其中:48, 86, 48, 16, 6, 7, 42, -122, 72, -50, 61, 2, 1, 6, 5, 43, -127, 4, 0, 10 为固定的公钥前缀。为椭圆算法密钥对的算法标识、以及主编码格式标识。

转换为字符串:3056301006072a8648ce3d020106052b8104000a0342000458e904511f45663420b70fd03888c631de434c2fb74a7beabd5283d66c187458a835694e7bf37428a42f013665c1831a161d88e0a7dc95e589eeb3b945672f3f

部分展示代码

创建新的密钥对

通过密钥对获取到公私钥字节

通过公私钥字节获取到公私钥字符串

字节数组转16进制字符串

通过公私钥字符串获取到公私钥字节

通过公钥字节生成公钥Hash

通过公钥Hash生成地址

通过算法保证绝对不可能通过地址推算出公钥。

通过私钥字节推导出公钥字节

公钥、公钥Hash、地址之间的关系:

私钥->公钥->公钥Hash->地址(注意:无法反向推导) .

最后更新于