部落格:http://blog.csdn.net/wallimn
網路硬碟:
最近花了些時間研究了一下數字簽名,因為電子簽名在當今時代太重要了,電子商務、網上銀行、電子政務等,許多領域都離不開它。說到電子簽名,首先要介紹幾個基本概念。
一、對稱加密
所謂對稱加密,就是加密與解密使用同樣的鑰匙。對稱加密的特點:加密效率高,速度快,但是由於加解密使用同樣的鑰匙,如果保護金鑰的安全是個問題。
另:基於key的加密方式是加密學的極大乙個進步,因為key的更換是很容易的,而演算法的開發、更換是成本較高的。
二、非對稱加密
所謂非對稱加密,就是加密與解密使用不同的金鑰。最常見的演算法是rsa,以發明者命名。用一把鑰匙加密,則要用另外一把解密。兩把鑰匙一把為私鑰(自已用,自已掌握)、一把為公鑰(大家用,用的人都知道)。
三、摘要演算法
對文字或檔案,計算出一段固定長度資訊,稱之為摘要資訊,常用的演算法用:md5,sha1。不同的文字或者檔案摘要不同,摘要資訊就如同文件的指紋一樣。
所謂的電子簽名,就是先對文件計算摘要資訊,然後使用私鑰加密,這個過程就是電子簽名。驗證電子簽名的時候,使用公鑰解密簽名資訊得到摘要資訊,然後再自行對文件計算一次摘要資訊。兩個摘要資訊相同,則稱為電子簽名吻合。如果兩個摘要資訊相同,則說明文件未被修改過,且是由簽名者發出。
電子簽名與檔案簽名有相同之處,採用電子簽名也能確認以下兩點:
第一,資訊是由簽名者發出的;
第二,資訊由簽發後到收到為止未曾做過任何修改。
bio_read_filename(bp, filename);
if ((pkey = pem_read_bio_privatekey(bp, null, null, (char *)password))
== null)
bio_free(bp);
return (pkey);
}讀取公鑰的函式:
evp_pkey *loadpublickey(const char *filename)
unsigned char dercert[4096];
unsigned long dercertlen;
dercertlen = fread(dercert,1,sizeof(dercert)/sizeof(dercert[0]),fp);
fclose(fp);
const unsigned char *ptmp = dercert;
x509 *x= d2i_x509(null,&ptmp,dercertlen);
if(x==null)
evp_pkey *pubkey =x509_get_pubkey(x);
return pubkey;
}部落格:http://blog.csdn.net/wallimn
網路硬碟:
用openssl自簽名證書
進入命令列 1.進入證書存放的路徑 rm rf ssl 假如ssl資料夾已經存在 mkdir ssl cd ssl 2.生成金鑰 openssl genrsa des3 out ssl.key 1024 輸入密碼 isec openssl rsa in ssl.key out ssl.key 輸入密...
iOS實現電子簽名
實現原理 1 使用拖動手勢記錄獲取使用者簽名路徑.2 當使用者初次接觸螢幕,生成乙個新的uibezierpath,並加入陣列中.設定接觸點為起點.在手指拖動過程中為uibezierpath新增線條,並重新繪製,生成連續的線.3 手指滑動中不斷的重新繪製,形成簽名效果.4 簽名完成,轉化為uiimag...
openssl 命令列實現數字簽名
一 傳送方a 生成私鑰 openssl genrsa passout pass 123456 out apri.pem 1024 生成公鑰 openssl rsa passin pass 123456 pubout in apri.pem out apub.pem 用b的公鑰加密資料 openssl...