【问题标题】:byte[] does not contain a definition for concatbyte[] 不包含 concat 的定义
【发布时间】:2017-08-17 09:31:47
【问题描述】:

我正在尝试使用对这个问题找到的答案在我的 .Net Core 应用程序中生成 HMAC-SHA1:

generate HMAC-SHA1 in C#

但是,我收到byte[] does not contain a defintion for Concat 的错误。我已经尝试在这里搜索,但似乎没有找到答案。

这个错误发生在var key2 = key1.Concat(oauth_consumer_secret).ToArray();这一行

using (var sha1 = SHA1.Create())
{
    var encodedStringAsByte = Encoding.UTF8.GetBytes(encodedString);

    var key1 = sha1.ComputeHash(encodedStringAsByte);
    var key2 = key1.Concat(oauth_consumer_secret).ToArray();
    var key3 = sha1.ComputeHash(key2);

    string signature = Convert.ToBase64String(key3);
 }

感谢您的任何见解和知识。

【问题讨论】:

  • oauth_consumer_secret的类型是什么?
  • 我不知道 asp net core 或其他什么,但高级语言通常重载 '+' 表示字符串/缓冲区连接......如果这不起作用,你可能需要更大缓冲并将它们都复制到那里。

标签: c# cryptography asp.net-core-mvc hmacsha1 asp.net-core-1.1


【解决方案1】:

oauth_consumer_secret 必须是 byte[],而您似乎正试图传递 string。您应该这样做:

//snip
var encodedSecret = Encoding.UTF8.GetBytes(oauth_consumer_secret);
var key2 = key1.Concat(encodedSecret).ToArray();
//snip

【讨论】:

  • 啊当然,oauth_consumer_secret 是一个字符串。谢谢!
【解决方案2】:

我怀疑你只是缺少程序集包括

using System.Linq;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多