1. 程式人生 > >信息安全課程設計進展

信息安全課程設計進展

素數 計劃 生成 密鑰 難題 多看 直接 加密算 .com

第一周:

1. 本周計劃完成的任務:

①熟悉需要的語言知識
②並且弄明白SM2算法的原理

2. 本周實際完成情況(代碼,文檔,程序運行截圖...),未完成計劃的原因?如何改進?

①Python程序編了一些算是練手吧:
命令行和集成環境都有用到:
技術分享圖片
有的程序一個裏面改了很多看結果所以總量看起並不是很多。。。
②對於SM2算法
SM2算法:SM2橢圓曲線公鑰密碼算法是我國自主設計的公鑰密碼算法,包括SM2-1橢圓曲線數字簽名算法,SM2-2橢圓曲線密鑰交換協議,SM2-3橢圓曲線公鑰加密算法,分別用於實現數字簽名密鑰協商和數據加密等功能。SM2算法與RSA算法不同的是,SM2算法是基於橢圓曲線上點群離散對數難題,相對於RSA算法,256位的SM2密碼強度已經比2048位的RSA密碼強度要高。

ECC算法描述:

  1、用戶A選定一條適合加密的橢圓曲線Ep(a,b)(如:y2=x3+ax+b),並取橢圓曲線上一點,作為基點G。
  2、用戶A選擇一個私有密鑰k,並生成公開密鑰(公鑰PB)K=kG。
  3、用戶A將Ep(a,b)和點(公鑰)K,G傳給用戶B。
  4、用戶B接到信息後 ,將待傳輸的明文(M)編碼到Ep(a,b)上一點M,並產生一個隨機整數r(r<n)。加密開始
  5、用戶B計算點C1=M+rK;C2=rG。
  6、用戶B將C1、C2傳給用戶A。
  7、用戶A接到信息後,計算C1-kC2,結果就是點M。因為C1-kC2=M+rK-k(rG)=M+rK-r(kG)=M

  再對點M進行解碼就可以得到明文。

  密碼學中,描述一條Fp上的橢圓曲線,常用到六個參量:
  T=(p,a,b,G,n,h)。
  (p 、a 、b 用來確定一條橢圓曲線,G為基點,n為點G的階,h 是橢圓曲線上所有點的個數m與n相除的整數部分)

  這幾個參量取值的選擇,直接影響了加密的安全性。參量值一般要求滿足以下幾個條件:

  1、p 當然越大越安全,但越大,計算速度會變慢,200位左右可以滿足一般安全要求;

  2、p≠n×h;

  3、pt≠1 (mod n),1≤t<20;
  4、4a3+27b2≠0 (mod p);
  5、n 為素數;
  6、h≤4。

3. 本周遇到的問題與解決過程

①print和eval的區別:
技術分享圖片

②寫乘法表時的問題
技術分享圖片

技術分享圖片

細節問題,前面的print在循環外面;應該每取一個i就打印一次

信息安全課程設計進展