1.使用cocoapods 導(dǎo)入兩個(gè)庫(kù)
pod 'CoreBitcoin'
pod 'libsodium'
2.使用ed25519生成隨機(jī)公私鑰對(duì)
需要引入的頭文件
#import "crypto_sign_ed25519.h"
#import "BTCBase58.h"
unsigned char seed[32],publickey[32],privatekey[64];
int i = crypto_sign_ed25519_keypair(publickey,privatekey);
NSData * publickey_data= [NSData dataWithBytes:publickeylength:32];
NSData * privatekey_data= [NSData dataWithBytes:privatekeylength:64];
NSString *privatekey =BTCBase58StringWithData(privatekey_data);
NSString *publickey =BTCBase58StringWithData(publickey_data);
3.驗(yàn)證 (可使用tp錢包 IOST賬號(hào)創(chuàng)建那里驗(yàn)證)

image
4. 私鑰創(chuàng)建公鑰方法
+ (NSString*)getPublicByPrivateKey:(NSString*)privatekey;
{
NSData*privatekeyDecode =BTCDataFromBase58(privatekey);
if((privatekeyDecode.length!=32) && (privatekeyDecode.length!=64))
{
return;
}
Byte codeKeyByteAry[privatekeyDecode.length];
for(inti =0; i < privatekeyDecode.length; i++) {
NSData*idata = [privatekeyDecode subdataWithRange:NSMakeRange(i,1)];
codeKeyByteAry[i] =((Byte*)[idata bytes])[0];
}
unsigned char private_key_bytes = (unsigned char)codeKeyByteAry;
unsigned char public_key[32];
ge_p3A;
private_key_bytes[0] &=248;
private_key_bytes[31] &=63;
private_key_bytes[31] |=64;
ge_scalarmult_base(&A, private_key_bytes);
ge_p3_tobytes(public_key, &A);
memmove(public_key , private_key_bytes +32,32);
NSData*publickeyData= [NSData dataWithBytes:public_keylength:32];
NSString*publickey =BTCBase58StringWithData(publickeyData);
return publickey;
}