在ios中使用rsa加密解密,需要用到.der
和.p12
字尾格式的檔案,其中.der
格式的檔案存放的是公鑰(public key)用於加密,.p12
格式的檔案存放的是私鑰(private key)用於解密. 首先需要先生成這些檔案,然後再將檔案匯入工程使用。其實不用這兩個證書也可以,這兩個證書只是用來存放公鑰和私鑰的,我們也可以直接#define在工程裡,直接使用。所以關於.der和.p12檔案的生成我這裡不再贅述,網上都有,可以自己去查。我直接介紹用rsaencryptor檔案來加解密介面的使用。
方法很簡單,首先導如rsaencryptor.h和rsaencryptor.m兩個檔案,並且匯入相對應的庫security.framework.然後呼叫rsaencryptor檔案的類方法,直接加密、解密。其中有四個類方法:
/**
* 加密方法
* * @param str 需要加密的字串
* @param path '.der'格式的公鑰檔案路徑
*/+ (nsstring *)encryptstring:(nsstring *)str publickeywithcontentsoffile:(nsstring *)path;
/** * 解密方法
* * @param str 需要解密的字串
* @param path '.p12'格式的私鑰檔案路徑
* @param password 私鑰檔案密碼
*/+ (nsstring *)decryptstring:(nsstring *)str privatekeywithcontentsoffile:(nsstring *)path password:(nsstring *)password;
/** * 加密方法
* * @param str 需要加密的字串
* @param pubkey 公鑰字串
*/+ (nsstring *)encryptstring:(nsstring *)str publickey:(nsstring *)pubkey;
/** * 解密方法
* * @param str 需要解密的字串
* @param privkey 私鑰字串
*/+ (nsstring *)decryptstring:(nsstring *)str privatekey:(nsstring *)privkey;
有.der和.p12證書的呼叫前兩個方法,不用證書的直接呼叫後兩個方法。
如:
nsstring *originalstring = rrr; nsstring *encryptstr = [rsaencryptor encryptstring:originalstring publickey:public_key ];
總結加密過程:
字串---》轉化為utf8格式的資料流data---》加密data---》轉化成base64編碼的字串
總結解密過程:
字串---》轉化為base64編碼的資料流data---》解密data---》轉化為utf8格式的字串
RSA加密演算法
素數是這樣的整數,它除了能表示為它自己和1的乘積以外,不能表示為任何其它兩個整數的乘積。例如,15 3 5,所以15不是素數 又如,12 6 2 4 3,所以12也不是素數。另一方面,13除了等於13 1以外,不能表示為其它任何兩個整數的乘積,所以13是乙個素數。素數也稱為 質數 二 什麼是 互質數...
RSA加密演算法
演算法的描述 1.選取兩個素數p,q 2.計算n p q,fn p 1 q 1 3.選擇乙個整數e,使得e與fn的最大公約數為1,e將會用於對資料進行加密。4.計算出乙個整數d,使得d e除fn的餘數為1。d用於對密文進行解密,還原出明文。5.假設明文為m,密文為c。如果需要對原文進行加密,則進行如...
RSA加密演算法
一 rsa是公鑰加密演算法之一,該演算法的數學基礎是 1 初等數論的euler定理,即 若整數a與整數n互素,則a n 1 mod n 其中,n 為尤拉函式。2 大整數分解很困難,即給定乙個大整數n,將其分解為n p q,兩個素數乘積十分困難。二 rsa基本原理 1 金鑰的生成。選擇大素數p,q,計...