체인의정석

Hash 만드는 모듈 - (해시데이터 블록체인에 저장하기 - PART 02) 본문

개발

Hash 만드는 모듈 - (해시데이터 블록체인에 저장하기 - PART 02)

체인의정석 2020. 10. 19. 11:10
728x90
반응형

DB에 저장시키고 (await) - 01장

해시값을 뽑아내고 나서 (await) - 02장,

블록체인에 저장 (await) - 03장,

중 2장의 내용인 파일을 해시화 하는 것은 다음과 같이 진행한다.

await를 걸어서 파일 해시가 진행 된 다음에 다음 동작이 이어지도록 한다.

    file_hash = await get_hash(file_path);
    console.log("file_hash >>>" ,file_hash);

이때 readFileSync, readFile 2가지 방법이 있다.

일반적으로는 뒤에 작업을 이어서 빠르게 하기 위하여 readFile을 쓰는 경우가 있다. (주석 참고)

하지만 여기서는 해시값이 나오고 나서, 블록체인에 저장시키기 위한 코드이다.

블록체인에서는 트렌젝션을 보내는 작업때문에 동기처리를 해주는것이 중요하다.

따라서 순서대로 동작시키기 위하여 Promise객체를 resolve로 보내주어서 이를 블록체인 사인 모듈에 넘겨주게 된다.

const get_hash = async(targetFile) => {
    return new Promise(async(resolve, reject) => {
        let input = fs.readFileSync(targetFile);
        // let input = fs.readFile(targetFile, function(err,data){
        //     if(err){
        //         consol
        //         return err
        //     }else{
        //         console.log(data)
        //         return data;
        //     }
        // });
        console.log("get hash input >>> " ,input)
            if(input){
                let output = hash.update(input).digest('hex');
                console.log(output)
                resolve(output);
            }else{
                reject("hash error");
            }
    })
}

get hash input을 보면 hash에 들어가는 input이 찍히고, 해당 파일의 해시가 찍힌다.

[2020/10/19 10:54:41] [LOG]   get hash input >>>  <Buffer 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 04 38 00 00 04 38 08 06 00 00 00 ec 10 6c 8f 00 00 20 00 49 44 41 54 78 5e ec dd 07 b4 1f 55 b9 ... 67317 more bytes>
[2020/10/19 10:54:41] [LOG]   e877bde4e729ada3367c3e4535f49a2f
[2020/10/19 10:54:41] [LOG]   file_hash >>> e877bde4e729ada3367c3e4535f49a2f

IT 유튜브 타임해커 보러가기

www.youtube.com/channel/UCHsRy47P2KlE749oAAjb0Yg?view_as=subscriber

 

타임해커

-블록체인/인공지능 -웹개발(프론트/백) -광고(페이스북/구글/네이버) -사업계획서 작성 -비전공생을 위한 IT 공부법 채널이름은 기획,마케팅,개발을 다 같이해서 업무성과를 내는데 드는 시간을

www.youtube.com

 

728x90
반응형
Comments