2018-04-14清華大學(xué)公開課筆記

簡述

比特幣的歷史

比特幣基本原理

md4 MD5 sha-1 sha-2 hash256 -512 ?sha-3

哈希算法

login as: shizizheng

shizizheng@47.94.19.190's password:

Last login: Sun Apr 15 11:06:22 2018 from 118.26.141.141

Welcome to Alibaba Cloud Elastic Compute Service !

$ nano abc.c

#includechar *get_file(char *path){

? ? ? ? FILE *file;

? ? ? ? int length;

? ? ? ? char *contents;

? ? ? ? file = fopen(path,"r+");

? ? ? ? fseek(file, 0, SEEK_END);

? ? ? ? length = ftell(file);

? ? ? ? fseek(file, 0, SEEK_SET);

? ? ? ? contents = malloc(length+1);

? ? ? ? fread(contents, 1,length,file);

? ? ? ? fclose(file);

? ? ? ? return contents;

}

int main(int count,char **argument)

{

? ? ? ? char *files;

? ? ? ? files = get_file(argument[1]);

? ? ? ? hash_state md;

? ? ? ? unsigned char out[64];

? ? ? ? sha256_init(&md);

? ? ? ? sha256_process(&md,files,strlen(files));

? ? ? ? sha256_done(&md,out);

? ? ? ? for (int i = 0; i < 64; i++)

? ? ? ? {

? ? ? ? ? ? ? ? printf("%x",out[i]);

? ? ? ? }

? ? ? ? return 0;

}

$ nano abc.c

$ tcc abc.c -c -o abc.o

$ tcc abc.o -ltomcrypt -o abcd

$ ./abcd shsh.txt

fa8487d7a2e9e3f73a24ad91d384bb48a65ea997b6c6f3bdc443572618d00000000000000000000000000000000$ ^C


數(shù)字簽名

ecdsa(橢圓曲線數(shù)字簽名算法)

一、ECDSA是什么

1、DSA歷史介紹

加密:RSA, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Elgamal ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?,ECC

簽名:RSA-DSA ? ? ? ? ? ? ? ? ? ? ? ?Elgamal-RSA ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?EC-DSA

2、定義

密鑰生成

K={p,q,E,B,mA,B=ma}

Secp256k1:y^2=x^3+7 ?mod ?p

y^2=x^3+ax+b mod p ?a.b屬于Fp


二、為什么采用ECDSA

三、ECDSA在區(qū)塊鏈中的應(yīng)用

1、交易

四、編程實現(xiàn)ECDSA

login as: shizizheng

shizizheng@47.94.19.190's password:

Last login: Sun Apr 15 13:58:37 2018 from 118.26.141.141

Welcome to Alibaba Cloud Elastic Compute Service !

$ nano abc.c

$ nano abcde.c

$ cat abcde.c

int main (int argc, char ** arguement){

? ? ? ? int hash_idx;

? ? ? ? int prng_idx;

? ? ? ? int res, err;

? ? ? ? unsigned long L1, L2;

? ? ? ? unsigned char hash_out[1024],

? ? ? ? ? ? ? ? ? ? ? ? ? out[1024],

? ? ? ? ? ? ? ? ? ? ? sign_out[1024];

? ? ? ? memset(hash_out,0, 1024);

? ? ? ? memset(out, 0, 1024);

? ? ? ? memset(sign_out, 0,1024);

? ? ? ? ecc_key key;

const ltc_ecc_set_type dp[]={32,

? ? ? ? "ECC-256"

? ? ? ? "FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF",

? ? ? ? "5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B",

? ? ? ? "FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551",

? ? ? ? "6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296",

? ? ? ? "4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5"

? ? ? ? }

}

命令

$ cp /usr/lib/libtfm.a ~/

$ ls

a? a.out? abc.c? abc.c.save? abc.o? abcd? abcde.c? abcdef.c? libtfm.a? libtomcrypt.a? sha256.o? shsh.txt


$ nano abcdef.c

$

$

$ ls

a? a.out? aaaaa.c? abc.c? abc.c.save? abc.o? abcd? abcde.c? abcdef.c? abcdef.o? libtfm.a? libtomcrypt.a? sha256.o? shsh.txt

$? nano bbb.c

$ cp /home/libtomcrypt.a ~/

$ tcc bbb.c -c -o bbb.o

$ tcc bbb.o libtomcrypt.a libtfm.a -o acc

$ ls

a? a.out? aaaaa.c? abc.c? abc.c.save? abc.o? abcd? abcde.c? abcdef.c? abcdef.o? acc? bbb.c? bbb.o? libtfm.a? libtomcrypt.a? sha256.o? shsh.txt

$ ./acc shsh.txt

fread: 100

signature value: 30452206efb193ff2ec8ffd93f7c732f8a799d139d23dcc97832cbf7ed548c4fdf1352210a5d911978a0fec37392ac126fcbde6e4ccd37eaa52651181c4e819380fe11

return non-value if the signature is valid: 1

$ ^C

$

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

相關(guān)閱讀更多精彩內(nèi)容

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