java中long to String(和back)的简单对称加密

Ami*_*rad 1 java encryption hash

我正在寻找一种简单的方法来将long转换为String并以一种"隐藏"长值的方式返回.

我宁愿避免在项目中为此功能添加另一个.jar.

它不一定是难以破​​解的加密,只是为了随机地看待没有经验的眼睛.

加成:

我的目的是将一个计数器值(long类型)附加到URL作为跟踪参数,而不会让用户知道计数器的值(有点像tinyURL的哈希值),这样servlet就会知道URL的计数器值点击.

谢谢

Art*_*ius 8

如果

X * Y = 1 (mod 2^32)
Run Code Online (Sandbox Code Playgroud)

然后

A * (X * Y) = A (mod 2^32)
(A * X) * Y = A (mod 2^32)
Run Code Online (Sandbox Code Playgroud)

因此,您可以通过将其乘以X来"加密"一些32位数,然后通过乘以Y来"解密".您只需要找到满足条件的一些非平凡的X和Y.

例如,(X,Y)=(3766475841,1614427073)或(699185821,3766459317).我刚刚用一个简单的蛮力程序找到了这些.

获得A*X后,您可以使用Base-64或十六进制或URL中的某些类似方案对其进行编码.我建议使用Base64,因为它占用的空间更少,看起来相当"随机".

  • 由于这意味着要在URL中,因此除非使用Web安全变体,否则还需要对基数64进行编码. (2认同)