keccak256 사용법

프동프동·2023년 8월 18일
0
post-thumbnail

Keccak-256은 SHA-3 (Secure Hash Algorithm 3)의 기반이 되는 알고리즘이다. 이 함수는 주어진 입력값에 대한 256비트 (32바이트) 길이의 고유한 해시 값을 생성한다.

특징

가변 길이의 인자를 받을 수 없으므로, 여러 인자를 전달하려면 abi.encodePacked() 함수를 함께 사용하여 인자들을 하나의 연속된 바이트 데이터로 인코딩해서 사용한다.

사용법

문자열 해시 생성

function keccak256_test_1_function() public pure returns(bytes32){
  bytes memory encoded = abi.encodePacked("Hello, World!");
  return keccak256(encoded);
}

0xacaf3289d7b601cbd114fb36c4d29c85bbfd5e133f14cb355c3fd8d99367964f

여러 데이터 타입을 포함한 해시 생성

function keccak256_test_2_function() public pure returns(bytes32){
  uint256 value = 12345;
  string memory message= "Hello, World!";
  bytes memory encoded = abi.encodePacked(message,value);
  return keccak256(encoded);
}

0x20cdf4819257e79336ae86e5fe64d1b6e97b1fc096be2381e82da4acfa77c5f6

두 개의 해시 값 비교

function keccak256_test_3_function() public pure returns(bool){
  string memory message1= "Hello, World!";
  string memory message2 = "Hi!";
  bytes32 compare1 = keccak256(abi.encodePacked(message1));
  bytes32 compare2 = keccak256(abi.encodePacked(message2));
  if(compare1 == compare2){
    return true;
  }else{
    return false;
  }
}

false

profile
좋은 개발자가 되고싶은

1개의 댓글

comment-user-thumbnail
2023년 8월 18일

좋은 글 감사합니다. 자주 방문할게요 :)

답글 달기