主页 > imtoken钱包官网下载 > BCGenerator 是一个比特币 pod 库,可以生成私钥、公钥和地址

BCGenerator 是一个比特币 pod 库,可以生成私钥、公钥和地址

imtoken钱包官网下载 2023-03-24 07:26:34

BC生成器

BCGenerator 是一个比特币 pod 库,可以生成私钥、公钥和地址。

相关实现原理:

技术细节:比特币私钥、公钥、钱包地址的由来与关系

项目地址

BCGenerator项目集成方法:

可以直接使用pod集成,也可以将代码拖到项目中;

吊舱整合:

pod 'BCGenerator'

BCGenerator 依赖类库:

  s.dependency "CBSecp256k1"
  s.dependency "CBBase58"

CBSecp256k1 是从 iOS 比特币项目 CoreBitcoin 中提取的椭圆双曲线算法的一部分。

项目地址:

CBBase58是从iOS比特币项目CoreBitcoin中提取的base58算法的一部分,并集成了RIPEMD算法的RIPEMD-160。

项目地址:

项目介绍:

BCGenerator目录

比特币私钥是什么_比特币私钥分享_比特币私钥数据库

库文件目录如下:

BCGenerator.h   EncryptUtil.h   NSData+UTF8.h   NSString+SHA.h
BCGenerator.m   EncryptUtil.m   NSData+UTF8.m   NSString+SHA.m

BCGenerator 使用

其中BCGenerator是生成公钥​​私钥地址的对象,使用方法如下:

 #import "BCGenerator.h"
 
 -(void)test{
 BCGenerator * generator = [[BCGenerator alloc]initWithWith:@"pseudorandom sequence"];
 NSLog(@"\n generator.rootPrivatekey = %@\n generator.mainProcessingKey = %@\n generator.rootPublickey = %@\n generator.address = %@",generator.rootPrivatekey,generator.mainProcessingKey,generator.rootPublickey,generator.address);
 }

BCGenerator的头文件

@property(strong,nonatomic)NSData * rootPrivatekey;
//主私钥
@property(strong,nonatomic)NSData * mainProcessingKey;
//主链编码

比特币私钥分享_比特币私钥是什么_比特币私钥数据库

@property(strong,nonatomic)NSData * rootPublickey; //主公钥 @property(strong,nonatomic)NSString * address; //由主公钥生成的比特币地址 /** 根据伪随机数生成种子 @param seedStr seedStr 根据伪随机数 @return return instancetype 生成的对象 */ -(instancetype)initWithWith:(NSString *)seedStr;

上海

SHA1-256主要由EncryptUtil完成。 其他sha算法在NSString+SHA中。

公钥和私钥的原理

比特币私钥分享_比特币私钥是什么_比特币私钥数据库

相关的实现原理在我的另一篇博客中有详细介绍。 理论知识不懂的可以看这篇文章。

技术细节:比特币私钥、公钥、钱包地址的由来与关系

下面是一些流程

种子生成:

SHA256(cryptographically secure pseudo-random number generator)=种子,种子经过SHA512单向哈希运算后,左边256作为主私钥比特币私钥分享,右边256作为主链码。

比特币私钥分享_比特币私钥是什么_比特币私钥数据库

图片.png

根种子被输入到HMAC-SHA512算法中,得到一个哈希值,可用于创建主私钥(m)和主链码。

然后可以使用椭圆曲线 m*G 过程将主私钥 (m) 生成为相应的主公钥 (M)。

Chaincode 可以将熵引入到从父键创建子键的方程式中。

从公钥到比特币地址:

椭圆曲线算法:secp256k1

地址:

地址生成公式A = RIPEMD160(SHA256(K))

K:公钥

答:地址

生成A作为地址的哈希码比特币私钥分享,加上1字节的版本前缀,Base58编码后生成可打印的地址串。

比特币私钥分享_比特币私钥是什么_比特币私钥数据库

图片.png

比特币私钥是什么_比特币私钥分享_比特币私钥数据库

版本更新 0.9.1 发布

Pod 版本从 0.9.0 升级到 0.9.1

修复生成BCGenerator后address为nil的bug

0.9.2 发布

Pod 版本从 0.9.1 升级到 0.9.2

添加 BTCScript

以下是本次添加的文件

BTC256.h
BTC256.m
BTCAddress.h
BTCAddress.m
BTCAddressSubclass.h
BTCBigNumber.h
BTCBigNumber.m
BTCCurvePoint.h
BTCCurvePoint.m
BTCErrors.h
BTCErrors.m
BTCKey.h

比特币私钥分享_比特币私钥是什么_比特币私钥数据库

BTCKey.m BTCNetwork.h BTCNetwork.m BTCOpcode.h BTCOpcode.m BTCProtocolSerialization.h BTCProtocolSerialization.m BTCScript.h BTCScript.m BTCSignatureHashType.h

指示:

    BCGenerator * bb = [[BCGenerator alloc]initWithWith:@"caobor111111"];
    BTCScript* outputScript = [[BTCScript alloc] initWithAddress:[BTCAddress addressWithString:bb.address]];
    NSLog(@"outputScript.data == %@",outputScript.data);

0.9.3 发布

Pod 版本从 0.9.2 升级到 0.9.3

移除NSData+UTF8(解决与其他库代码重复的问题)