Signature

ops/2025/2/3 1:08:43/

打开得到加密脚本:

python">import ecdsa
import randomdef ecdsa_test(dA,k):sk = ecdsa.SigningKey.from_secret_exponent(secexp=dA,curve=ecdsa.SECP256k1)sig1 = sk.sign(data=b'Hi.', k=k).hex()sig2 = sk.sign(data=b'hello.', k=k).hex()r1 = int(sig1[:64], 16)s1 = int(sig1[64:], 16)s2 = int(sig2[64:], 16)return r1,s1,s2if __name__ == '__main__':n = 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141a = random.randint(0,n)flag = 'flag{' + str(a) + "}"b = random.randint(0,n)print(ecdsa_test(a,b))# (4690192503304946823926998585663150874421527890534303129755098666293734606680, 111157363347893999914897601390136910031659525525419989250638426589503279490788, 74486305819584508240056247318325239805160339288252987178597122489325719901254)

解密脚本:

python">import ecdsa
import randomdef ecdsa_verify(dA, sig_r, sig_s, msg, k):# 从私钥 dA 和签名 r, s 验证消息sk = ecdsa.SigningKey.from_secret_exponent(secexp=dA,curve=ecdsa.SECP256k1)try:# 使用生成的签名验证消息valid = sk.verify((sig_r, sig_s), msg.encode())return validexcept ecdsa.keys.BadSignatureError:return Falsedef ecdsa_test(dA, k):sk = ecdsa.SigningKey.from_secret_exponent(secexp=dA,curve=ecdsa.SECP256k1)sig1 = sk.sign(data=b'Hi.', k=k)sig2 = sk.sign(data=b'hello.', k=k)r1 = int(sig1[:32], 16)s1 = int(sig1[32:], 16)r2 = int(sig2[:32], 16)s2 = int(sig2[32:], 16)return r1, s1, r2, s2if __name__ == '__main__':# 这个是用于模拟的私钥,实际情况中需要提供dA = 1234567890 # 私钥dAk = random.randint(0, 2**256)msg = 'Hi.'r1, s1, r2, s2 = ecdsa_test(dA, k)print(f"Signature for msg 'Hi.': r={r1}, s={s1}")# 验证签名is_valid = ecdsa_verify(dA, r1, s1, msg, k)print(f"Signature valid: {is_valid}")


http://www.ppmy.cn/ops/155177.html

相关文章

HarmonyOS应用开发快速入门

本节内容将帮助开发者学习如何构建一个全新的HarmonyOS应用,学习使用DevEco Studio创建新项目、使用预览器预览页面、了解基础组件如Image、Text等。 文章目录 一、介绍二、创建一个新项目三、页面结构总览四、自定义文本视图五、创建Image组件 一、介绍 根据本教程…

java练习(1)

两数之和(题目来自力扣) 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案,并且你不能使用两次相…

社畜减负AI快速入门

本地部署 为什么要本地部署 1.保证私密性,线上的软件会获取你的输入文本作为他的训练数据,对于有保密性质的工作不适用 2.降低使用成本,部分模型线上使用需要收费,线下部署可以跳过收费。 本地部署效果肯定不如线上!&…

vue框架技术相关概述以及前端框架整合

vue框架技术概述及前端框架整合 1 node.js 介绍:什么是node.js Node.js就是运行在服务端的JavaScript。 Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎。 作用 1 运行java需要安装JDK,而Node.js是JavaScript的运行环…

SpringBoot+Electron教务管理系统 附带详细运行指导视频

文章目录 一、项目演示二、项目介绍三、运行截图四、主要代码1.查询课程表代码2.保存学生信息代码3.用户登录代码 一、项目演示 项目演示地址: 视频地址 二、项目介绍 项目描述:这是一个基于SpringBootElectron框架开发的教务管理系统。首先&#xff…

远程连接-简化登录

vscode通过ssh连接远程服务器免密登录(图文)_vscode ssh-CSDN博客

python学opencv|读取图像(四十七)使用cv2.bitwise_not()函数实现图像按位取反运算

【0】基础定义 按位与运算:两个等长度二进制数上下对齐,全1取1,其余取0。按位或运算:两个等长度二进制数上下对齐,有1取1,其余取0。 按位取反运算:一个二进制数,0变1,1变0。 【1】…

我用Ai学Android Jetpack Compose之Box

这篇学习一下Box。回答来自 通义千问。 我想学习Box,麻烦你介绍一下 当然可以!在 Jetpack Compose 中,Box 是一个非常灵活且强大的布局组件,用于将多个子组件堆叠在一起。与 Column 和 Row 不同,Box 允许其子组件重叠…