密碼學之大數乘法

2021-07-28 08:49:16 字數 1215 閱讀 7868

大數相乘,就是指數字比較大,相乘的結果超出了基本型別的表示範圍,通常將其儲存在乙個字串中來計算。

所以這樣的數不能夠直接做乘法運算。

在學習密碼學的過程中,當從使用者介面接受的資料字串cstring無法使用atoi或atol轉化為對應的數字時,就需要使用大數乘法。

原理:1,兩個字元陣列儲存str1和str2的值。

2,由於兩數相乘後結果位數最多為len1+len2.則可以設定乙個陣列result[len1+len2]來儲存結果;

3,result[0]預留出來。相乘之後,暫時儲存結果result的每一位的數字,不做進製處理。result每一位上的數字result[i+j+1] = str1[i]*str[j].

4,從後往前遍歷,判斷是否需要進製。

**實現

#include #include #include char* bignummul(const char* str_1, const char* str_2, char* result)

//從最後一位往前判斷是否進製。

for (i = len-1; i >= 0; --i)

result[i] += '0';

} if ('0' == result[0])//如果第乙個字元為0,將所有字元往前移一位

memmove(result, result+1, len);

return result;

}void test()

;//儲存number1

char str_2[1024] = ;//儲存number2

char result[1025] = ;//儲存result

printf("輸入number1:");

scanf("%s", str_1);

printf("輸入number2:");

scanf("%s", str_2);

//大數乘法

bignummul(str_1, str_2, result);

//輸出結果

printf("result = %s\n", result);

}

int main()

while (getchar() != eof);

return 0;

}

附上其他大數運算:

大數減法:

大數加法:

密碼學 密碼學基礎

密碼學是研究編制密碼和破譯密碼的技術科學。密碼學的安全目標至少包含三個方面 保密性 完整性 可用性。完整性 資源只有授權方以授權的方式進行修改,所有資源沒有授權則不能修改。可用性 資源只有在適當的時候被授權方訪問,並按需求使用。密碼系統由5部分組成 1 明文空間m 全體明文的集合 2 密文空間c 全...

密碼學 柵欄密碼

使用的時候通過設定解密的偏移量不一樣的話,會得出不同的解碼內容 一直設定不同的偏移位數 直到找到帶有cyberpeace 開頭的解碼內容 偏移量也就是分組的數字長度 一般就是flag了 有時候它也會全部的解碼都沒有flag的標誌,這時候一定仔細看題目給出的條件 還有的情況就是在題目裡面它會提示給你數...

密碼學 密碼學中幾種攻擊模式

本科畢業設計做完之後,一直覺得自己需要系統來學習一下密碼學,密碼學是乙個古老的學科,前人已經研究了太多太多,而伴隨著量子計算的逐漸發展,之前制定出來的密碼演算法都面臨著被淘汰的危險。今天記錄一下根據密碼分析者知道資訊的多少,密碼學中分為常見的幾種攻擊模式,以及它們主要用於什麼場合。在介紹攻擊模式之前...