【发布时间】:2020-06-10 20:27:51
【问题描述】:
我有 HUAWEI E8372 (LTE Wingle)。我想使用 WEB API 来控制一些设置。 WEB API 是 HTTP,但使用 RSA POST/GET 消息加密
此时我可以获得 SESSION TOKEN 和 PUBLIC RSA KEY 进行数据交换。
但我无法使用此 RSA 公钥加密数据。
这是您可以从{modem_ip}/api/webserver/publickey 获得的公共 RSA。
<?xml version="1.0" encoding="UTF-8"?>
<response>
<encpubkeyn>badee4e0554786797c0338bff35b80f68644c8cd96ccffd1b0f1f1558c885f237212e6499a91be2e578ee97418dac79aff85f871f38579fdc9b597aa50ad6b60dbc04a84f739647d6854881667688152c6686e715853a1adb2e5181a2ec38f86a6220e2cb30c9efab33fc453b78f0eb38a078b9c22d13b23969717b251bce6614f1c4a57decc0389ccb365ee6313f1b9fd82fc7872dd896c04518f765e7c02fa319d2f80bb2c3fc8cf615b5016ac8925ff299680b9e25ec996bb4a25cb045cc25bafd17b1d3648fbf3a69d5131b851d10e220b9f63f206db01debef0fa086cc0cf8fe816c83aac5232bbf0bda2335339556a0752f204ba3c18bdf4487b1ddbcb</encpubkeyn>
<encpubkeye>010001</encpubkeye>
</response>
当我尝试将其转换为 RSA.FromXmlString(String) - 错误数据异常
【问题讨论】:
-
没有代码很难重现。在链接的问题中,字符串使用 ASCII 编码进行编码。但是在您的示例中,它们将被解释为十六进制字符串,并且必须进行相应的编码,例如
rsaKeyValue += Convert.ToBase64String(StringToByteArray("bade...dbcb"));的模数和指数的类似。可以找到StringToByteArray的可能实现,例如here. -
托帕科,感谢您的评论。我在 JS gist.github.com/ForsakenHarmony/c9a96e11600bbf807513 中找到了原始库
标签: c# encryption rsa huawei-mobile-services