【问题标题】:How to hash the return string from WCF service to client如何散列从 WCF 服务到客户端的返回字符串
【发布时间】:2013-05-27 03:23:34
【问题描述】:

我有一项服务可以获取卡帐号(16 位数字)。网站 (MVC) 将调用该服务,然后将返回一张包含帐号的卡。

由于帐号是机密信息,我必须只将卡帐号的最后四位返回到网站,但在服务内部,完整的帐号必须保留。

我该怎么做?

【问题讨论】:

  • 您的服务从哪里获取卡号?
  • MVC 应用程序是否需要调用具有完整帐号的服务?还是只是根据其他非敏感信息请求有关卡的信息?
  • 不需要完整的帐号,只需要最后四个。完整的帐号必须保留在服务中,因为我需要它用于服务中的其他方法,例如验证。最后四个仅在 MVC 应用程序中用于显示目的。
  • 这些其他方法是从 MVC 应用程序调用的吗?如果是这样,MVC 应用程序是否有其他识别信息可以被服务用来获取完整的帐号?下面 Marco 的解决方案是一种方法,但存在哈希码冲突的可能性,所以我想看看是否有另一条信息可以保证是唯一的(如客户编号或其他信息)。
  • 是的,这些方法是从 MVC 应用程序调用的。有,卡号。

标签: c# asp.net-mvc wcf web-services


【解决方案1】:

你能不能在你的服务中做这样的事情:

有一个字典来存储卡的哈希和卡号:

var cards = new Dictionary<int, string>();
var cardNumber = "1234123412341234" 

cards.Add(cardNumber.GetHashCode(), cardNumber);

这是一个简单的解决方案,但有很多未知数:您的服务是否应该是无状态的,如果是这样,您需要保留字典,但也许因为这个问题的正确解决方案是使用某种缓存系统,例如 memcache。

【讨论】:

  • 是的,我的服务是无状态的..我会尝试这个解决方案..谢谢!
  • 两个不同值的哈希码可能相同 - 如果 OP 在字典中存储大量卡片,这将导致重复键异常。
  • 但如果使用更好的散列算法则不太可能。这只是一个简单的想法,因此将 op 作为开始的东西。
猜你喜欢
  • 1970-01-01
  • 2017-10-21
  • 2018-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多