我在互联网上看了很多,找不到我需要的东西。我找到了字符串到字符串,或md5,它没有返回int等等。
所以我需要的是关于如何将字符串加密为int的一些指导。我正在使用的框架已经使用了一段时间,所以我无法改变它。
在某些时候,我有一个UniqueID
属性应该是实体的ID,但有时候是null
,因此我不能使用它,所以我需要使用其他两个ID- ■创建一个唯一的ID,分配给我的UniqueID
,类似string.format("{0}-{1}", branchId, agentId)
,然后将其加密为int,将其分配给UniqueID
,将其发送到任何方法,解密{{ 1}}回到一个字符串,并用“ - ”拆分并得到我的两个ID。并且提到我没有任何安全担忧。感谢你的帮助。
答案 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位。