【问题标题】:different result when encoding values from web.config从 web.config 编码值时的不同结果
【发布时间】:2018-01-22 15:28:06
【问题描述】:

我正在尝试通过从我的 web.config 获取用户名和密码来形成基本身份验证标头 当我从 web.config 获取这些值时,base64 字符串与我通过将值直接硬编码到代码中得到的字符串不同。

这是我的 web.config:

 <?xml version="1.0" encoding="utf-8"?>
    <appSettings>
    <add key="Username" value="lowercaseusername"/>
    <add key="Password" value="mixedcasePassword​"/>
    </appSettings>

还有我的代码:

var username = ConfigurationManager.AppSettings["Username"];
var password = ConfigurationManager.AppSettings["Password"];
string encodedValues = `Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(username + ":" + password));`

当我从 web.config 获取编码字符串时,我在编码字符串的末尾得到一个额外的“4oCL”,而不是直接硬编码为代码中的值

【问题讨论】:

  • 您的问题解决了吗?

标签: asp.net .net encoding utf-8 web-config


【解决方案1】:

您的 web.config 具有 utf-8 编码。如果我复制粘贴了您的密码并将 web.config 编码设置为iso-8859-1

<?xml version="1.0" encoding="iso-8859-1"?>

这就是我从配置中获取值时得到的结果:

混合大小写密码â\u0080\u008b

这应该对应

混合大小写密码​

因此,您的 web.config 中存在一些不正确编码的不可见字符。

web.config 文件是一个 XML 文件,因此需要对值进行编码。因此,如果您在 web.config 中进行设置(将编码保持在 utf-8):

<add key="Password" value="mixedcasePassword&#226;&#8364;&#8249;" />

如果你测试,你应该有true

ConfigurationManager.AppSettings["Password"] == "mixedcasePassword​"

如果您从 web.config 或硬编码中获取密码,那么您的 base64 应该匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-14
    • 2019-10-04
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    相关资源
    最近更新 更多