阵列偏移加密

时间:2014-01-27 09:13:58

标签: php arrays offset

目前我正在开发一个加密应用程序,我遇到了这个问题

$stralphabet=array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');

正如您所看到的,上面的字符串是一串字母表。我正在进行凯撒移位加密,算法很简单。

计算字符串的数量,然后根据位置替换每个字母,例如:

string is "AB" after encryption it would be "CD"

问题是如果我有字符串YZ“它给我一个错误

Notice: Undefined offset: 26 in C:\xampp\htdocs\cryptographer\encrypt.php on line 19

Notice: Undefined offset: 27 in C:\xampp\htdocs\cryptographer\encrypt.php on line 19

你能帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

您显然正在访问$stralphabel而未检查边缘情况(即$stralp[$i+1])。您应该添加一些检查或使用modulo运算符,而不仅仅是:

$stralp[$i+1]

你有

$stralp[($i+1) % XXX]

其中XXXstralp数组中的条目数。

PS:这甚至不接近密码学。

答案 1 :(得分:0)

你的数组有26个字母从0到25索引,所以你的循环结束条件有问题。