以太坊介绍 以太坊常用算法
- 2025-10-01 16:36:00
- admin
- 原创 84
一、以太坊介绍
1、以太坊介绍:https://ethereum.org/zh/developers/docs/intro-to-ethereum
2、代币标准:https://ethereum.org/zh/developers/docs/standards/tokens/erc-20
3、智能合约介绍:https://ethereum.org/zh/smart-contracts
4、稳定币介绍:https://ethereum.org/zh/stablecoins
5、权益证明PoS,质押32以太币成为一个验证者,验证者创建区块,或者验证区块是否有效;
6、验证者诚实投票会被奖励,手续费也会分给验证者,欺骗网络则会受到惩罚;
7、以太坊支持以太币,支持智能合约,通过智能合约支持自定义符号;
8、以太坊每12秒生成1个区块,以太币目前约1.2亿个,以太币总量不固定;
二、以太坊常用算法
1、sha1和sha2输入长度有限制,keccak输入长度无限制,并且支持生成任意长度哈希;
2、keccak标准化之后包含:sha3-224、sha3-256、sha3-384、sha3-512、shake128、shake256
3、sha3输出固定,shake支持输出任意长度哈希,shake主要用于密钥导出和随机数生成;
4、keccak、sha3、shake主要区别在于填充方式不一样,目前sha2和sha3都是安全的;
5、keccak采用海绵结构:吸入阶段absorbing phase,挤出阶段squeezing phase;
6、输入数据padding之后进行分组,吸入阶段和挤出阶段使用相同的置换函数keccak-f;
7、keccak官方网站:https://keccak.team/keccak.html
8、keccak在线计算:https://webencrypt.org/onlinetoolsjs/keccak_256.html
bcprov代码示例:
MD5Digest md5 = new MD5Digest();
KeccakDigest kec = new KeccakDigest(256);
byte[] input = "feinen".getBytes();
byte[] md5ret = new byte[16];
byte[] kecret = new byte[32];
md5.update(input, 0, input.length);
md5.doFinal(md5ret, 0);
System.out.println(Hex.toHexString(md5ret));
kec.update(input, 0, input.length);
kec.doFinal(kecret, 0);
System.out.println(Hex.toHexString(kecret));