0

我在互联网上看了很多,找不到我需要的东西。我找到了 string to string 或 md5,它不返回 int 等等。

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

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

4

2 回答 2

1

一般来说,您所要求的无法完成。您有两个数字,每个数字的范围从 0 到 150,000。表示 150,000 需要 18 位。所以需要 36 位来表示这两个数字。Anint32是 32 位。

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

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

于 2013-05-13T13:43:28.407 回答
0

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

于 2013-05-13T14:26:31.643 回答