iOS (區(qū)塊鏈學(xué)習(xí))-使用ed25519創(chuàng)建公私鑰對(duì)

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;

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容