#include <eosiolib/eosio.hpp>
#include <eosiolib/crypto.h>

#include "sha3.h"

using namespace eosio;

template <typename CharT>
static std::string to_hex(const CharT *d, uint32_t s)
{
  std::string r;
  const char *to_hex = "0123456789abcdef";
  uint8_t *c = (uint8_t *)d;
  for (uint32_t i = 0; i < s; ++i)
  {
    (r += to_hex[(c[i] >> 4)]) += to_hex[(c[i] & 0x0f)];
  }
  return r;
}

class keccak : public eosio::contract
{
public:
  using contract::contract;

  //@abi testsha3
  void testsha3(const checksum256 &_msg)
  {
    uint8_t *msg = (uint8_t *)&_msg;
    uint8_t hash[32];
    SHA3_256(hash, msg, 32);
    std::string hash_str = to_hex(hash, 32);
    prints(hash_str.c_str());
  }
};

EOSIO_ABI(keccak, (testsha3))

  • EOS

    第三代区块链到来了?赶紧学习 EOS 智能合约吧

    3 引用 • 3 回帖
  • 智能合约

    智能合约(英语:Smart contract )是一种旨在以信息化方式传播、验证或执行合同的计算机协议。

    20 引用 • 9 回帖
  • SHA3
    1 引用 • 2 回帖
感谢    赞同    分享    收藏    关注    反对    举报    ...