这可能与RegEx:编码/加扰id?

时间:2010-01-28 14:50:29

标签: regex url-rewriting

是否可以使用正则表达式执行类似的操作:编码和解码数字?

例如,我想将id 15123(实际上代表我的端口号)编码为对用户无用的内容,例如看似随机的字符串,例如c95Dd7!7。然后解码它。

我想用正则表达式执行此操作,因为我需要用于URL重写的解码ID。

我知道javascript packer大致相同......但我不知道从哪里开始。或者我的问题是否有任何开箱即用的示例或解决方案?

谢谢!

3 个答案:

答案 0 :(得分:1)

您将无法使用正则表达式执行此操作。您可以根据使用正则表达式找到的匹配项执行splitreplace操作。但这要求您可以直接访问Regex类(我假设您根据过去的问题使用.NET)。即便如此,这也是编码,加密或加密数据的一种糟糕方式。

我建议使用对称加密算法。我最常用的是Rijndael。有人写了一个wrapper class来使Rijndael加密非常容易。

更新: 这是一种非常粗糙的方法。同样,正则表达式非常不适合这种事情。但是如果你只是想改变数字的顺序,你可以做这样的事情:

正则表达式:

(\d)(\d)(\d)(\d)(\d)

替换为:

$1$4$3$5$2

基本上它的作用是将每个数字(\ d)捕获到一个组中。然后替换表示法允许您通过其编号标识符访问每个组(第一组是$ 1,第二组是$ 2,依此类推)。

  • 12345将成为14352
  • 15123将成为12135

Here it is in action.

答案 1 :(得分:1)

与史蒂夫B.提到的一致。

我的想法是做一些简单的编码,因为它只是看起来你想做一个简单的让用户保持黑暗的想法。

可能将字节和输出反转为字符串?应该是相当难以理解但更容易转换。

答案 2 :(得分:0)

由于正则表达式实际上是为了匹配范围和包含多个匹配的其他状态,因此它不适合可逆字符串转换。我认为你能用正则表达式得到的最接近的是字符< - >字符映射,这当然在其他方面更容易做到。

还有很多其他加密方法,为什么不使用更常见的东西呢?