目前我正在开发一个加密应用程序,我遇到了这个问题
$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
你能帮我解决这个问题吗?
答案 0 :(得分:1)
您显然正在访问$stralphabel
而未检查边缘情况(即$stralp[$i+1]
)。您应该添加一些检查或使用modulo
运算符,而不仅仅是:
$stralp[$i+1]
你有
$stralp[($i+1) % XXX]
其中XXX
是stralp
数组中的条目数。
PS:这甚至不接近密码学。
答案 1 :(得分:0)
你的数组有26个字母从0到25索引,所以你的循环结束条件有问题。