是否可以使用正则表达式执行类似的操作:编码和解码数字?
例如,我想将id 15123
(实际上代表我的端口号)编码为对用户无用的内容,例如看似随机的字符串,例如c95Dd7!7
。然后解码它。
我想用正则表达式执行此操作,因为我需要用于URL重写的解码ID。
我知道javascript packer大致相同......但我不知道从哪里开始。或者我的问题是否有任何开箱即用的示例或解决方案?
谢谢!
答案 0 :(得分:1)
您将无法使用正则表达式执行此操作。您可以根据使用正则表达式找到的匹配项执行split或replace操作。但这要求您可以直接访问Regex类(我假设您根据过去的问题使用.NET)。即便如此,这也是编码,加密或加密数据的一种糟糕方式。
我建议使用对称加密算法。我最常用的是Rijndael。有人写了一个wrapper class来使Rijndael加密非常容易。
更新: 这是一种非常粗糙的方法。同样,正则表达式非常不适合这种事情。但是如果你只是想改变数字的顺序,你可以做这样的事情:
正则表达式:
(\d)(\d)(\d)(\d)(\d)
替换为:
$1$4$3$5$2
基本上它的作用是将每个数字(\ d)捕获到一个组中。然后替换表示法允许您通过其编号标识符访问每个组(第一组是$ 1,第二组是$ 2,依此类推)。
答案 1 :(得分:1)
与史蒂夫B.提到的一致。
我的想法是做一些简单的编码,因为它只是看起来你想做一个简单的让用户保持黑暗的想法。
可能将字节和输出反转为字符串?应该是相当难以理解但更容易转换。
答案 2 :(得分:0)
由于正则表达式实际上是为了匹配范围和包含多个匹配的其他状态,因此它不适合可逆字符串转换。我认为你能用正则表达式得到的最接近的是字符< - >字符映射,这当然在其他方面更容易做到。
还有很多其他加密方法,为什么不使用更常见的东西呢?