【问题标题】:C# Encrypt string to RSA based on public key HUAWEI E8372C#基于公钥HUAWEI E8372将字符串加密为RSA
【发布时间】: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) - 错误数据异常

见下文 C# RSA FromXmlString() BadData Exception

【问题讨论】:

  • 没有代码很难重现。在链接的问题中,字符串使用 ASCII 编码进行编码。但是在您的示例中,它们将被解释为十六进制字符串,并且必须进行相应的编码,例如rsaKeyValue += Convert.ToBase64String(StringToByteArray("bade...dbcb")); 的模数和指数的类似。可以找到StringToByteArray 的可能实现,例如here.
  • 托帕科,感谢您的评论。我在 JS gist.github.com/ForsakenHarmony/c9a96e11600bbf807513 中找到了原始库

标签: c# encryption rsa huawei-mobile-services


【解决方案1】:

公钥加密方法使用私钥和公钥的组合。私钥只有您的计算机知道,而公钥由您的计算机提供给任何其他想要与其进行安全通信的计算机。要对加密消息进行解码,计算机必须使用发送消息的计算机提供的公钥以及自己的私钥。相当好的隐私(PGP)是一种非常流行的公钥加密实用程序,可用于加密几乎任何数据。发送计算机用对称密钥加密文档,然后用接收计算机的公钥加密对称密钥。后者使用其私钥解码对称密钥,然后使用对称密钥对文档进行解码。 大规模实施公钥加密(例如,安全的 Web 服务器可能需要它)需要另一种方法。这时候就可以使用数字证书了。从根本上说,数字证书是一条信息,表明 Web 服务器受到称为证书颁发机构的独立来源的信任。证书颁发机构充当两台计算机都信任的中介。它确认每台计算机的身份与其声明的身份匹配,然后将每台计算机的公钥提供给对方。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-29
    • 1970-01-01
    • 2013-06-08
    • 2021-03-30
    • 2011-11-13
    • 1970-01-01
    • 1970-01-01
    • 2017-09-08
    相关资源
    最近更新 更多