Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对对象进行加密和JSON序列化_C#_Json_Encryption - Fatal编程技术网

C# 对对象进行加密和JSON序列化

C# 对对象进行加密和JSON序列化,c#,json,encryption,C#,Json,Encryption,我有一个MVC应用程序和一个API,我需要为每个请求从MVC应用程序向API传递一个自定义凭证对象。我想加密Credentials对象,并将其发送到API的请求头中 我该怎么做 我找到了大量关于如何加密字符串的文章,但没有一篇是关于以XML以外的格式加密对象的 使您的凭证对象可序列化 如前所述,将对象序列化为字符串 加密字符串 如果坚持使用JSON序列化,可以使用或示例。这里的关键是将对象转换为字符串。正如您所说,您已经看到了这样的示例(加密字符串)。使用json.Net的反序列化Object方

我有一个MVC应用程序和一个API,我需要为每个请求从MVC应用程序向API传递一个自定义凭证对象。我想加密Credentials对象,并将其发送到API的请求头中

我该怎么做

我找到了大量关于如何加密字符串的文章,但没有一篇是关于以XML以外的格式加密对象的

  • 使您的凭证对象可序列化
  • 如前所述,将对象序列化为字符串
  • 加密字符串

  • 如果坚持使用JSON序列化,可以使用或示例。

    这里的关键是将对象转换为字符串。正如您所说,您已经看到了这样的示例(加密字符串)。使用json.Net的
    反序列化Object
    方法生成一个字符串,对该字符串进行加密,然后在此处使用add方法;将其附加到headers集合

    在后端,您只需解密、反序列化并继续


    请注意,如评论中所指出的,最好使用类似HTTPS的方式。为什么要自己加密然后发送HTTP,而你可以使用一个协议来代替它呢?

    你的要求并不完全清楚,但听起来似乎有许多不同平台的库可以满足这些要求,它们将为你处理必要的加密。对于JWT,重点是令牌的身份验证和完整性,而不是保密性


    如果您想实现自己的方法,请遵循加密字符串的教程,因为JSON是字符串。

    您是否考虑过使用安全套接字(https等)为您加密所有内容?如果内存正常,则在此类调用中也会对标头进行加密。您可以尝试使用
    NewtonSoft.Json
    将对象序列化为Json,然后跨任意API发送,并在API代码中反序列化。@如果您不想通过HTTPS发送,并且如果您已经通过HTTPS发送,则如果API支持HTTPS,MartinNoreke的答案将是最好的对API的工作进行控制,使用公钥/私钥对应该执行这个操作(序列化您对JSON的对象,然后使用公钥加密字符串,发送到API,使用私钥解密,反序列化),如果您对API有控制,请考虑返回HMAC的挑战/响应握手。这样,密码就不会通过网络发送。hmac确保每个会话只执行一次该过程。