美文网首页
2018-04-14清华大学公开课笔记

2018-04-14清华大学公开课笔记

作者: 山海星河 | 来源:发表于2018-04-25 09:06 被阅读31次

    简述

    比特币的历史

    比特币基本原理

    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

    数字签名

    ecdsa(椭圆曲线数字签名算法)

    一、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在区块链中的应用

    1、交易

    四、编程实现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

    $

    相关文章

      网友评论

          本文标题:2018-04-14清华大学公开课笔记

          本文链接:https://www.haomeiwen.com/subject/vhgkkftx.html