hashing
- 특수하게 정의된 해시함수를 이용하여 임의의 사이즈를 가진 데이터를 고정된 길이를 가지는 데이터로 매핑하는 프로세스
- 입력값에 변화가 있으면 다른 출력값이 나온다(2^256크기이다)
- 256비트 해시함수는 충돌 가능성 없고 서로 다른 데이터는 다른 해시값을 가짐
블록체인에서 해시 사용
- 디지털 서명에 사용된다
- off-chain on-chain
- 스토리지를 위해서 해시를 이용해서 줄여 저장한다.
블록체인 헤더
- 뭔가를 건드리면 prev block hash값이 변경된다
- 위변조가 불가능 하다
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
contract Khash {
bytes32 public hashedValue;
/*
function hashMe( uint value1, bytes32 password) public
{
hashedValue = keccak256(abi.encodePacked(value1, password));
}
*/
function hashMe(uint value1) public
{
hashedValue = keccak256(abi.encodePacked(value1));
}
}
- 전달하고자 하는 값을 헤시를 이용해 원래 값을 볼 수 없게한다
- kaccak256이라는 해쉬 함수는 이미 배포되어있는 모듈형태여서 부르트포스로 알아낼 수는 있다
- 위와 같은 경우가 있기에 psw(bytes32이므로 16진수로 바꿔서 넣어줘야 한다)를 추가해 더 복잡하게 한다