#include <boost/uuid/sha1.hpp> #include <iostream> /* @brief SHA1摘要算法:一種很重要的密碼學算法,可將任意長度的文本壓縮成20個字節的 獨一無二的的摘要(uuid名字生成器使用該算法) */ using namespace boost::uuids::detail; using namespace std; int main() { sha1 sha; // 聲明摘要對象 char* szMsg = "This is a short message!"; //-------------------------- // 向摘要壓入文本 //-------------------------- // 第一種: // 壓入一個字節 sha.process_byte(0x10); // 第二種: // 壓入多個字節(指定字節數) sha.process_bytes(szMsg, strlen(szMsg)); // 第三種: // 壓入多個字節(指定指針範圍,多少地址) sha.process_block(szMsg, szMsg+strlen(szMsg)); //--------------------------- // 取出摘要中加密後的內容 //--------------------------- // 聲明摘要的返回值 unsigned int digest[5]; // unsigned int(4個字節) * 5個unsigned int = 20 個字節 sha.get_digest(digest); // 返回壓縮後的20個字節的摘要內容 for (int i=0; i<5; ++i) { cout<< hex << digest[i]; // 以十六進制輸出 } cout <<endl; for (int i=0; i<5; ++i) { cout<< digest[i]; // 跟以十六進制輸出的效果同樣 } getchar(); return 0; }