如何不用庫函式用C 實現RSA檔案加密?

時間 2021-05-31 19:08:59

1樓:

步驟:實現大數庫

實現大數四則運算

使用Montgomery實現模乘模冪

藉由上述基礎完成Miller Rabin素數測試然後就是簡單的函式呼叫進行c^d%N之類的操作了

2樓:柳傾

本科畢業設計寫過RSA 加密。需要額外的庫最根本的原因是需要「大數庫」。

因為RSA 加解密資料塊長度超過常用型別(int,size_t, uint64_t)大小,必須有支援大數運算的庫。

有了大數運算的庫,RSA也就很好寫了(如果你不注重效率的話)。

當然大數庫你可以自己寫,但效率和調bug 上比你熟悉庫要困難太多。

素數測試之類的,都是大數庫附帶的福利好吧~~

3樓:陳樂群

如果只是學習一下RSA的話樓主可以隨便寫寫,但是切忌將自己的實現用於生產環境。樓主可以看看這篇文章:http://

zhuanlan /p/20

354745

4樓:

占個空,考完就來答,不答是狗。

考完了,汪。

玩笑開完了現在來幹正事。。。

RSA演算法的核心,在於大數因式分解這個問題的難於解決上。

為了解釋起來比較方便,首先說明一下RSA演算法的加密解密過程。

有兩個大素數p和q,一般有1024位這麼大,它們的乘積定為且p,q均為素數,則有

所以得證。

2)當M與n非互質時,由於,則必有或;

假設。由費馬小定理,有

所以按照模運算定義,將上式改寫為

由於,那麼也必然能被p整除,即上式中t可表示為所以有即

在的情況下也是相同的證明。

綜合上述兩種情況就證明了RSA演算法的正確性。

具體實現下次再說~~~

printf 等系統庫函式是如何實現的?

張想 windows上有個標準裝置,std,printf在根源上是,通過windows API GetStdHandle 來得到這個裝置,然後通過WriteFile API來寫這個裝置。printf也好,putchar 也好,他只是向乙個stdout緩衝區來寫資料 這是裝置系統無關的 這是C語言做的...

Linux 中如何快速檢視 C 庫函式的標頭檔案以及相應的函式資訊?

蒲公英 自從看了 Unix Linux程式設計實踐教程 五星推薦這本書 檢視標頭檔案和函式資訊非常方便。man k keyword grep name 查詢乙個man手冊中的簡短說明包含keyword的函式,name為函式名的關鍵字 可以不加管道 如man k timer grep set 查詢乙個...

C 如何實現自動呼叫建構函式?

夏洋 如果你用C 11的話,直接這麼寫就行了 class UserClass Base 甚至你想只寫成一句 DefValues i,j,k 也是有辦法的。例如 define FIRST a,a define SECOND a,b,b define EMPTY define DEFER1 m m EM...