【发布时间】:2019-05-15 08:13:23
【问题描述】:
我有这个计算 ROT13 的函数。
string function rot13(required string inString) output="false" {
var j = 0;
var k = 0;
var out = "";
for (var i = 1; i <= Len(arguments.inString); i++){
j = asc(Mid(arguments.inString, i, 1));
if(j >= asc("A") && j <= asc("Z")) {
j = ((j - 52) % 26) + asc("A");
}
else if(j >= asc("a") && j <= asc("z")) {
j = ((j - 84) % 26) + asc("a");
}
out &= Chr(j);
} // end for
return out;
}
我不喜欢它似乎有 3 个幻数 52、26 和 84。我认为 26 可以替换为 asc("Z") - asc("A") + 1
但我不知道 52 和 84 代表什么。我不知道我会给他们取什么名字。
【问题讨论】:
-
这是为了简单的混淆吗? ROT13 对安全性的作用并不大。
-
如果你做双 ROT13,它的安全性是原来的两倍。说真的,它并不安全。
-
另外,您可以删除
var k。它没有被使用。 -
双 ROT13 是 ROT26 是明文。 :-)
-
您可以随时评论这些神奇数字的含义。由于这只是一个旋转密码,它只会增加函数的开销以对其进行可变化。
标签: coldfusion magic-numbers rot13 coldfusion-2018