首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使"new ASCIIEncoding().GetBytes(usernamePassword)“读取"§”符号

如何使"new ASCIIEncoding().GetBytes(usernamePassword)“读取"§”符号
EN

Stack Overflow用户
提问于 2016-03-21 13:02:55
回答 2查看 344关注 0票数 2

我想让所有的客户从我的收获账户..。问题是密码包含一个§签名。我先把它拿走了,它起了作用,但现在我的老板告诉我,由于不同的原因,密码不能更改。我已经试过utf8encoding等了。

代码语言:javascript
复制
public List<Client> GetAllClients()
{
    uri = "https://laios.harvestapp.com/clients";

    using (WebClient webClient = new WebClient())
    {
         webClient.Headers[HttpRequestHeader.ContentType] = "application/json";
         webClient.Headers[HttpRequestHeader.Accept] = "application/json";
         webClient.Headers[HttpRequestHeader.Authorization] = "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes(usernamePassword));

         string response = webClient.DownloadString(uri);

         clientsList = JsonConvert.DeserializeObject<List<Wrapper>>(response).Select(c => c.client).ToList();
     }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-21 13:17:34

我已经试过utf8encoding等了。

您在这里有点笼统,没有任何细节,但是UTF8可以很好地用这个符号对字符串进行编码和解码。

代码语言:javascript
复制
var mySTr = "My § sign";
var encoded = System.Text.Encoding.UTF8.GetBytes(mySTr);
var encoding2 = Convert.ToBase64String(encoded);
Console.WriteLine("Base64 encoded: " + encoding2);
var decoded = Convert.FromBase64String(encoding2);
var decodedStr = System.Text.Encoding.UTF8.GetString(decoded);
Console.WriteLine("Decoded again: " + decodedStr);
Debug.Assert(mySTr.Equals(decodedStr, StringComparison.Ordinal));

编辑

注释:当密码包含§时,我得到一个错误401

还不清楚您正在与谁进行通信的服务是谁拥有的。如果这也在您的控制之下,那么您需要确保使用相同的编码来逆转密码。您不能在UTF8中发送它,并且在ASCII中解码时也不能期望得到相同的结果。如果您不拥有它,那么您需要与该方联系,并询问他们关于在ASCII允许字符集之外处理字符的建议(如果xanatos提出的解决方案不起作用)。

更多的是:如果您拥有这个服务,那么这不是一个好的实践。您正在发送一个未加密的未加密的密码通过网络(甚至通过一个公共网络,如互联网)!默默无闻的安全感从来都不是好的!只应发送密码的散列。如果不能这样做,那么它应该被加密,但哈希是首选。

票数 1
EN

Stack Overflow用户

发布于 2016-03-21 13:14:13

§不是ASCII,因为它的代码是167,即> 127。

您可以尝试使用Encoding.GetEncoding("windows-1252").GetBytes和/或Encoding.GetEncoding("iso-8859-1").GetBytes。若要区分这两者,请尝试使用欧元符号的密码。windows-1252应该支持它,iso-8859-1不应该支持它。

请参见here,其中他们解释了通常编码应该是iso-8859-1

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36131785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档