2008年12月9日 星期二

11月學習筆記

從11月的計概課中,我選了MD5以及演算法來寫,我好像只有聽到這2個所以就選了這2個來寫了XD。
MD5
MD5就是電腦的一種加密演算法,是一種驗證碼的工具,在課堂上老師有提到相關的東西,後來也有提到所謂密碼學的東西,MD5演算法以16個32位元子分組即512位分組來提供資料雜湊,經過程式流程,生成四個32位元資料,最後聯合起來成為一個128位散列,這是MD5的演算方法,從上課中老師說其實我們也可以自己寫加密程式,例如輸入A輸出的是C,類似這種程式就是一種加密程式了,但這種程式很快就會被人家破解,因為加密的方法太過於簡單….MD5就好許多,但仍然有問題存在,有可能會遇到碰撞的情形,輸入不同的東西,但是卻得到相同的結果。

MD5可以應用在幾個地方:
1.防止密碼被竊取
在網路上申請帳號時,輸入密碼,透過MD5算出編碼後的密碼,再將其與會員資料一同存取,輸入-->轉換成編碼後的密碼,這邊是很簡單的,但是要逆向操作,則是很困難,因此可以有效防止密碼被駭客竊取。
EX:輸入ABC-->902fbdd2b1df0c4f70b4a5d23525e932
知道編碼後的密碼要反推回ABC是很難的一件事情!!
2.資料比對
許多人都喜歡從網路上下載東西,此時我們可以透過MD5算出一個鍵值,然後再把這個鍵值與資料來源的網站作相比,如果相同就可以確定資料沒有損壞或者被修改,同時也可以確定資料是不是帶有病毒之類的東西存在。

演算法
演算法可以當作是解決問題的方法,我們自己寫的程式也是一種演算法,輸入一個直然後讓電腦算出結果,只是同一種演算法能算的東西很少,根據不同的問題會有不同的演算法,演算法有5樣特徵,分別是輸入、輸出、確定性、有效性、有限性,透過不同的特徵可以寫出不同的演算法。

EX:這是計算1+2+..n的運算法
#include
using namespace std;
void main()
{ int n,i,sum=0; cin>>n; for(i=1;i<=n;i++)
sum+=i;
cout << sum << endl; }

http://zh.wikipedia.org/w/index.php?title=%E6%BC%94%E7%AE%97%E6%B3%95&variant=zh-tw 裡面寫的很詳細,可以參考看看。

沒有留言:

張貼留言