练习:ECIES 加密 / 解密

编写一个程序,使用ECIES(椭圆曲线集成加密方案),通过公钥 / 私钥对消息进行加密 / 解密加密需要 EC 公钥解密需要对应的 EC 私钥。在内部实现中,可自行选择基于 256 位椭圆曲线(例如 brainpoolP256t1)的 ECC 密码学和对称加密算法(例如 AES-256-CTR + MAC、AES-128-GCM 或 ChaCha20-Poly1305),以及密钥派生函数(例如 PBKDF2)。

你可以按照 SECG-SEC-1 标准编写自己的 ECIES 实现,也可以使用相应编程语言的标准 ECIES 库,例如:

ECIES 加密

编写一个程序,使用 ECIES 混合加密方案和 256 位 ECC 公钥 (2 * 256 bits) 加密消息

  • 输入十六进制公钥(第一行,未压缩,128 个十六进制数字)+ 用于加密的明文消息(第二行)组成。
  • 输出十六进制编码的加密消息。它可能包含 ECC 密文公钥 + 密文 + MAC 码 + 对称密钥算法参数,但具体内容在很大程度上取决于底层算法和实现。

输入示例:

552e2b308514b38e4989d71ed263e0af6376f65ba81a94ebb74f6fadc223ee80aa8fb710cfb445e0871cd1c1a0c1f2adb2b6eedc2a0470b04244548c5be518c8
Sample text for ECIES encryption.

输出示例:

由于加密方案具有随机性,每次执行程序得到的结果都会不同:

0442e2fba3fddba1ba9207f3276e141809782dc72529523aa1fcf35b15c4c22a9333ddacd7d64de4abd0a36138d430c50be7a98d5512cb8c2fe36ca45a0bbd7927c150ae3637c45093207531ce75e3841d4808ced85e82305d8da891708c20479388f6d4a7cde213bb36bf860c5df0077358a942eeb9a4c23e89bcc11f11

ECIES 解密

编写一个程序,使用 ECIES 混合加密方案和 256 位 ECC 私钥解密由上一个示例程序生成的加密消息

  • 输入十六进制私钥(第一行,64 个十六进制数字)+ 要解密的加密消息(第二行)组成。
  • 输出解密后的明文消息。如果出现解密问题(例如解密密钥不正确或加密消息损坏),则显示 Error: cannot decrypt the message

输入示例:

27f07d3251dee39ec2c5ff800641f4d839e6f8065033e9a710ea2e519473bdd7
0442e2fba3fddba1ba9207f3276e141809782dc72529523aa1fcf35b15c4c22a9333ddacd7d64de4abd0a36138d430c50be7a98d5512cb8c2fe36ca45a0bbd7927c150ae3637c45093207531ce75e3841d4808ced85e82305d8da891708c20479388f6d4a7cde213bb36bf860c5df0077358a942eeb9a4c23e89bcc11f11

输出示例:

Sample text for ECIES encryption.

输入示例:

此示例包含一个不正确的解密私钥:

9ab686c269b2c58f0fca699dde09cf24e23353e56bd60095d681b23709cb0dc3
0442e2fba3fddba1ba9207f3276e141809782dc72529523aa1fcf35b15c4c22a9333ddacd7d64de4abd0a36138d430c50be7a98d5512cb8c2fe36ca45a0bbd7927c150ae3637c45093207531ce75e3841d4808ced85e82305d8da891708c20479388f6d4a7cde213bb36bf860c5df0077358a942eeb9a4c23e89bcc11f11

输出示例:

Error: cannot decrypt the message

results matching ""

    No results matching ""