加密演算法總的可以分為兩種,對稱加密與非對稱加密演算法。
rsa是2023年三位數學家rivest,shamir,adleman設計的一種非對稱的加密演算法,該演算法破解的關鍵在於尋找大數的兩個質數因子。大數長度越大,破解難度也就越大,目前768位的金鑰已被破解,安全性建立在公鑰長度足夠的基礎上,如ios9中引入的新特性ats中對公鑰長度就有明確的要求,至少為2048位。
「rsa是第乙個也是目前唯一乙個既能用於金鑰交換又能用於數字簽名的演算法。「
尤拉定理
尤拉函式φ(n): 小於等於n的正整數中與n構成互質關係的數的數目
條件: 如果兩個正整數a和n互質,則:
費馬小定理
條件:正整數a與質數p互質,φ(p)= p-1,則:
模反元素
如果a和n互質,則:
ab = 1 (mod n)
此時 b就是a的模反元素,尤拉定理可以證明模反元素必然存在。
隨機選擇兩個大質數p, q;
n = p * q, φ(n)=(p-1)(q-1);
e 是隨機小於φ(n)的正整數,且與φ(n)互質。
計算e對於φ(n)的模反元素d, ed = 1 (mod φ(n)) —> ed -1 = k φ(n)
公鑰(n,e) 私鑰(n, d)
加密資訊m,m必須是整數(字串可以取ascii值或unicode值,且m必須小於n),加密後的資訊為c
1. 公鑰加密
2. 私鑰解密
加解密證明具體可以看這裡
from ssl常見加密演算法
- des(data encryption standard):資料加密標準,速度較快,適用於加密大量資料的場合。
- 3des(triple des):是基於des,對一塊資料用三個不同的金鑰進行三次加密,強度更高。
- aes(advanced encryption standard):高階加密標準,是下一代的加密演算法標準,速度快,安全級別高;
from ssl常見加密演算法
- rsa:由 rsa 公司發明,是乙個支援變長金鑰的公共金鑰演算法,需要加密的檔案塊的長度也是可變的;
- dsa(digital signature algorithm):數字簽名演算法,是一種標準的 dss(數字簽名標準);
- ecc(elliptic curves cryptography):橢圓曲線密碼編碼學。
常用的hash演算法:md5和sha,雜湊演算法的特點: 不可逆和無衝突(不存在不同字元的雜湊結果是一樣的)。
- md5:加密後長度為32
- sha: 包括sha1,sha224,sha256,sha384,sha512,長度分別為40,56,64,96,128。
ios sha加密
#import阮一峰:rsa演算法原理(一)const
char *cstr = [inputstr cstringusingencoding:nsutf8stringencoding];
nsdata *data = [nsdata datawithbytes:cstr length:inputstr.length];
// 使用對應的sha1,sha224,sha256,sha384,sha512
uint8_t digest[cc_sha256_digest_length];
// 使用對應的sha1,sha224,sha256,sha384,sha512
cc_sha256(data.bytes, data.length, digest);
nsmutablestring* output = [nsmutablestring
// 使用對應的sha1,sha224,sha256,sha384,sha512stringwithcapacity:cc_sha256_digest_length * 2];
for(int i = 0; i < cc_sha256_digest_length; i++)
rsa演算法原理(二)
ssl常見加密演算法
加密演算法之RSA演算法
它是第乙個既能用於資料加密也能用於數字簽名的演算法。它易於理解和操作,也很流行。演算法的名字以發明者的名字命名 ron rivest,adi shamir 和leonard adleman。但rsa的安全性一直未能得到理論上的證明。它經歷了各種攻擊,至今未被完全攻破。一 rsa演算法 首先,找出三個...
HTTPS系列之CA數字證書
pki public key infrastructure 公鑰基礎設施 遵循標準的利用公鑰加密技術提供一套安全基礎平台的技術和規範。支援公鑰管理並能支援認證,加密,完整性和可追究性服務的基礎設施 完整的pki系統具有 ca,數字證書庫,金鑰備份及恢復系統,證書作廢系統,應用介面。from baik...
c 實現rsa演算法 RSA演算法實現過程
rsa演算法是實現非對稱加密的一種演算法,其用到很多有關數論的內容,在此我們不多討論。而將目光聚焦於演算法的實現過程。rsa過程 第二步 計算n a b 61 53 3233 第三步 計算 a 1 b 1 60 52 3120 第四步 選擇與3120互質的乙個數e 17,這個e也就是我們的公鑰,需要...