import os import ecdsa import hashlib from Crypto.Util.number import * from Crypto.Util.strxor import strxor as xor import secret p = getPrime(256) gen = lambda: p + getPrime(16) pad = lambda m: m + os.urandom(32 - len(m) % 32) key = os.urandom(30) sk = ecdsa.SigningKey.from_secret_exponent( secexp=bytes_to_long(key), curve=ecdsa.SECP256k1 ) sig1 = sk.sign(data=b'This is the first message.', k=gen()).hex() sig2 = sk.sign(data=b'Here is another message.', k=gen()).hex() enc = xor(hashlib.sha512(key).digest(), pad(secret.flag)).hex() print(f"{sig1 = }\n{sig2 = }\n{enc = }") ''' sig1 = '3f4a6f288e35a4397201d246a98c1f9cfa463e67717fbbdcbd26d7fac75f875855455c2bfb355f7f593ffbe4c4bd1fc729cc129976b56905639100c8ac716b37' sig2 = '9f563b21f0ee31b2f7a1a8c6edc8ff23b63e0a9d5dd4a699ecc3164871b4982df51bb2feb4bc06c578afd21d3e6227231dd5fe1d8440f3dcd025fd3ea68f5516' enc = 'cc66d251bfa54954890c81dc1c607bae716573949f327db18aa1f4c0f420b8d29dc7e7ff9edb17b90306bd2aa753fc3fd4dafb9cc4b771cbdd79000ef05a40c0' '''
时间: 2023-07-15 09:09:58 浏览: 383
这是一个使用 ECDSA 签名和 XOR 加密的 Python 代码,主要分为以下几个步骤:
1. 生成一个 256 位的质数 p,然后再随机生成一个 16 位的质数,将两个相加得到一个 272 位的数作为 ECDSA 的生成元。
2. 随机生成一个 30 字节的密钥 key,使用 SHA-512 哈希函数对其进行哈希,得到一个 64 字节的哈希值作为加密密钥。
3. 使用 ECDSA 签名算法对两个明文消息 "This is the first message." 和 "Here is another message." 进行签名,其中 k 是一个随机数,生成的签名值 sig1 和 sig2 分别为 136 字节和 139 字节的十六进制字符串。
4. 对一个名为 secret.flag 的字符串进行填充,使其长度为 32 的倍数,然后使用 XOR 加密算法和上一步得到的加密密钥进行加密,得到一个 128 字节的密文 enc。
该代码的作用是将 secret.flag 加密并对其进行签名,然后输出签名值和密文。
相关问题
ECDSA host key for [isupport.semidrive.com]:29418 has changed and you have requested strict checking.
这是一个 SSH 错误提示信息,意思是你连接的主机([isupport.semidrive.com]:29418)的 ECDSA 主机密钥已经发生了改变,而你设置了严格的密钥检查,因此无法继续连接。可能是主机管理员更换了密钥或者你连接的不是你原来连接的主机。你可以尝试重新连接,如果还是无法连接,可以联系主机管理员解决该问题。
ECDSA host key for [192.168.21.71]:10008 has changed and you have requested strict checking. Host key verification failed.怎么解决
这个错误消息表明,您使用的客户端尝试连接到IP地址为192.168.21.71,端口号为10008的服务器时,发现服务器的ECSDA主机密钥发生了变化。由于您已设置严格的检查,因此连接失败。
解决方法有两种:
1. 使用"ssh-keyscan"命令重新收集服务器的公钥并更新本地主机密钥,再进行连接
2. 通过在命令行中使用"-o StrictHostKeyChecking=no"参数禁用严格的主机密钥检查来进行连接
阅读全文