所以,爲了做一點事情,我在C++中實現了AES算法。它編譯和鏈接完美。當我運行它時,VS2015報告堆棧在變量「temp」周圍被破壞。它告訴我究竟在何處發生的事情,但我沒有看到任何時髦的在該代碼:堆棧損壞,不知道是什麼原因造成的
void rotWord(Word &it)
{
Word temp;
for (int i = 0; i < 4; i++)
temp[(i - 1) % 4] = it[i];
for (int i = 0; i < 4; i++)
it[i] = temp[i];
}
順便說一句,Word
被聲明爲typedef Byte Word[4]
,其中Byte
就是一個類。任何想法是什麼導致堆棧腐敗在這裏?如果需要,我可以發佈完整的源代碼。
更令人不安的是,在C類標準2011年之前,符號或'(-1)%4'是實現定義的。所以它*可能是-1,但不一定。 (你的修復很好。) –
修復了這個問題。不過,現在我需要查看我的代碼來修復。我想我在其他幾個地方也這麼做過...... – ahumblecoder
@DanRoche這是一個C++問題 –