solidity 数学和密码学函数

devtools/2024/10/18 18:27:17/

数学和密码学函数为开发者提供了一系列强大的工具,用于执行各种数学运算和加密操作

addmod(uint x, uint y, uint k) returns (uint)

计算 (x + y) % k,加法会在任意精度下执行,并且加法的结果即使超过 2**256 也不会被截取。

从 0.5.0 版本的编译器开始会加入对 k != 0 的校验(assert)。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;contract AddModExample {// 使用 addmod 函数计算 (x + y) % k// 20 % 3 = 2// 3 * 6 = 18 // 20 - 18 function safeModAdd(  uint256 x,  uint256 y,  uint256 k ) public pure returns (uint256) {// require(k != 0, "Modulus cannot be 0"); // 确保模数 k 不为 0return addmod(x, y, k);}
}

mulmod(uint x, uint y, uint k) returns (uint)

计算 (x * y) % k,乘法会在任意精度下执行,并且乘法的结果即使超过 2**256 也不会被截取。

从 0.5.0 版本的编译器开始会加入对 k != 0 的校验(assert)。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;contract AddModExample {// 使用 addmod 函数计算 (x + y) % k// 20 % 3 = 2// 3 * 6 = 18 // 20 - 18 function safeModAdd(  uint256 x,  uint256 y,  uint256 k ) public pure returns (uint256) {// require(k != 0, "Modulus cannot be 0"); // 确保模数 k 不为 0return mulmod(x, y, k);}
}

keccak256(bytes memory) returns (bytes32)

计算输入的 Keccak-256 哈希值。

备注

以前 keccak256 的别名叫 sha3 ,在 0.5.0 版本中被删除。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;contract AddModExample {function safeModAdd( string  calldata _a ) public pure  returns (bytes32 ) {return keccak256(bytes(_a));}
}

ripemd160(bytes memory) returns (bytes20)

计算输入的 RIPEMD-160 哈希值。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;contract AddModExample {function safeModAdd( string  calldata _a ) public pure  returns (bytes20 ) {return ripemd160(bytes(_a));}
}

http://www.ppmy.cn/devtools/91247.html

相关文章

笔面试编程题总结

8/6诺瓦星云 修改程序 void point(int *p){*p p[2];}; int main() {int c[] {1,2,3,4,5},*p c;point(p1);for(;p <c5;){printf("%d",*p);}return 0; }1、分隔字符串 strtok //c语言 #include <stdio.h> #include <string.h>// 函数声明 char* fin…

创建目录命令(mkdir) 学会啦

通过mkdir命令可以创建新的目录&#xff08;文件夹&#xff09; mkdir来自英文&#xff1a; Make Directory 语法&#xff1a; mkdir [-p] Linux路径 参数必填&#xff0c;表示Linux路径&#xff0c;既要创建的文件夹的路径&#xff0c;相对路径或绝对路径均可 wendywendyde…

不仅能防沉迷游戏的防沉迷软件(Python)

介绍 一个有那么一点功能但是又不太保险的防沉迷工具 我脑子进水了才会写这玩意儿 为了变强&#xff0c;我不择手段&#xff08;笑出zhu jiao 代码 好像没什么用的设定界面 # -*- coding: utf-8 -*- # Environment PyCharm # File_name login |User Pfolg # 2024/…

2024年【上海市安全员B证】模拟考试及上海市安全员B证证考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 上海市安全员B证模拟考试参考答案及上海市安全员B证考试试题解析是安全生产模拟考试一点通题库老师及上海市安全员B证操作证已考过的学员汇总&#xff0c;相对有效帮助上海市安全员B证证考试学员顺利通过考试。 1、【…

加速构建:在PyCharm中提升项目构建速度的秘诀

加速构建&#xff1a;在PyCharm中提升项目构建速度的秘诀 PyCharm作为Python开发者的首选IDE之一&#xff0c;提供了强大的功能来简化开发流程。然而&#xff0c;随着项目规模的扩大&#xff0c;构建项目可能会变得缓慢&#xff0c;影响开发效率。本文将深入探讨在PyCharm中解…

Golang | Leetcode Golang题解之第328题奇偶链表

题目&#xff1a; 题解&#xff1a; func oddEvenList(head *ListNode) *ListNode {if head nil {return head}evenHead : head.Nextodd : headeven : evenHeadfor even ! nil && even.Next ! nil {odd.Next even.Nextodd odd.Nexteven.Next odd.Nexteven even.N…

K8S Operator

K8S Operator是Kubernetes中用于管理自定义资源的一种特殊控制器&#xff0c;它扩展了Kubernetes API的功能&#xff0c;允许用户以声明式的方式创建、配置和管理复杂应用的实例。 一、定义与功能 定义&#xff1a;K8S Operator是一种基于Kubernetes自定义资源&#xff08;CR…

Java之TCP编程综合案例

1.反转案例 搭建一个TCP客户端&#xff0c;从键盘录入整行数据&#xff08;遇到quit结束录入&#xff09;然后发送给服务器&#xff0c;再接收服务器返回的数据并输出。 package com.briup.chap12;public class Test064_ReversalClient {public static void main(String[] ar…