歐拉函數定義
設一正整數n,小於等於n的正整數中與n互質之數個數。
計算方式
情況一
n=1,φ(1) = 1
情況二
n為質數,則φ(n)=n-1
情況三
假設欲求歐拉函數之數做n因式分解,得到n=p1^n x p2^m x p3^s x p4......,則
φ(n)=n(1-1/p1)(1-1/p2)(1-1/p3)......
(此處p1,p2,p3......為質數;n,m,s為任意次方,可推廣到任意數)
2016年10月10日 星期一
2016年9月13日 星期二
RSA 加密演算法
Step 1 - 產生金鑰 (key distribution)
產生兩組金鑰,私鑰(private key)與公鑰(public key)
Notice : 雖說是step 1 但也滿複雜的......
亂數挑選兩相異質數,此處選定兩質數 A & B;
相異,就是不能一樣的意思
.把 A 與 B 相乘得到 C
→C = A * B
.把 A 與 B 帶入尤拉函數得到 D
→D = (A-1) * (B-1)
.找一質數E,比 D 小且和 D 互質
.找一數 F 使 (E*F) (mod C) = 1
此處mod為取餘數
私鑰 = ( C , F )
公鑰 = ( C , E )
Step 2 - 加解密 (en-decryption)
寄件人拿到公鑰(C,E)
兩者的差異便不細說,
產生兩組金鑰,私鑰(private key)與公鑰(public key)
Notice : 雖說是step 1 但也滿複雜的......
亂數挑選兩相異質數,此處選定兩質數 A & B;
相異,就是不能一樣的意思
.把 A 與 B 相乘得到 C
→C = A * B
.把 A 與 B 帶入尤拉函數得到 D
→D = (A-1) * (B-1)
.找一質數E,比 D 小且和 D 互質
.找一數 F 使 (E*F) (mod C) = 1
此處mod為取餘數
私鑰 = ( C , F )
公鑰 = ( C , E )
Step 2 - 加解密 (en-decryption)
寄件人拿到公鑰(C,E)
使用以下方法加密檔案
→原檔案^E ≡ 加密檔 (mod C)
此時可將加密後檔案傳給收件人
→原檔案^E ≡ 加密檔 (mod C)
此時可將加密後檔案傳給收件人
收件人使用私鑰(C,F)
收件人使用以下方法解密檔案
→加密檔^F ≡ 原檔案 (mod C)
即可取得原檔案
Step Extra - 實際操作
看了這些,事實上也是頭腦打結,不如自己動手玩玩看吧
稍微找了資料,對於程式白癡較多人推薦使用 Openssl 以及 Gpg4Win 進行RSA加密
.Openssl (Official)
.Gpg4Win (Official)
兩者的差異便不細說,
但有GUI的Gpg4Win理所當然使用起來較為友善,
2016年9月12日 星期一
計算機程式(一) Code::Blocks安裝指南
今天開始上計算機程式啦
據說是一門超爆幹硬的課。
總之大學開學第一週,
由於加退選尚未結束,
老師通常不會上太多課,
所以就來說說滿有名的編譯器——Code::Blocks怎麼安裝吧。
Step1 : 到 Code::Blocks官方網站下載安裝檔
→進入網站後點選
Downloads
→點選 Download the binary release
→找到 codeblocks-XX.XXmingw-setup.exe 把它下載下來(XX.XX為版本號)
注意 : 一定要找有包括 mingw的安裝檔,不然後續會出問題
Step2 : 安裝 Code::Blocks
開啟安裝檔,
之後就跟你玩線上遊戲安裝主程式的時候一樣啦XD,
然後就Finish惹,
開工寫程式!
2016年6月30日 星期四
C++ common escape characters
Common escape characters (常見的轉義字符)
\n : new line
\r : carriage return
\t : tab
\\ : 印反斜線
\" : 印雙引號
\n : new line
\r : carriage return
\t : tab
\\ : 印反斜線
\" : 印雙引號
訂閱:
文章 (Atom)