在C#中将字符串加密为int

时间:2013-05-13 11:34:38

标签: c#-4.0 encryption

我在互联网上看了很多,找不到我需要的东西。我找到了字符串到字符串,或md5,它没有返回int等等。

所以我需要的是关于如何将字符串加密为int的一些指导。我正在使用的框架已经使用了一段时间,所以我无法改变它。

在某些时候,我有一个UniqueID属性应该是实体的ID,但有时候是null,因此我不能使用它,所以我需要使用其他两个ID- ■创建一个唯一的ID,分配给我的UniqueID,类似string.format("{0}-{1}", branchId, agentId),然后将其加密为int,将其分配给UniqueID,将其发送到任何方法,解密{{ 1}}回到一个字符串,并用“ - ”拆分并得到我的两个ID。并且提到我没有任何安全担忧。感谢你的帮助。

2 个答案:

答案 0 :(得分:1)

一般来说,你所要求的是无法做到的。您有两个数字,每个数字的范围从0到150,000。它需要18位代表150,000。因此需要36位来表示这两个数字。 int32是32位。

除非你可以利用一些关于分支和代理之间关系的特殊知识(如果有的话),否则就不可能将这36位压缩成32位整数。

但是,您可以创建一个查找表,为每个分支代理对分配唯一的密钥。一个简单的递增键。然后你可以建立这对(即'142096-037854')并查找id。或者,给定id,查找分支/代理对。

答案 1 :(得分:0)

如果有办法将两个18位数字压缩成32位,我肯定不知道。如果你不能确定这两个ID可以在65536之下(或者其中一个在16384之下)那么我能想到的最好的就是你将UniqueID改为long - 那么它是直接的,没有字符串,只是将AgentId放入前32位,将branchId放入最后32位。