最常用的是md5和base64編碼,還有des 3des aes加密
最近幾天折騰了一下如何在ios上使用rsa來加密。ios上並沒有直接的rsa加密api。但是ios提供了x509的api,而x509是支援rsa加密的。因此,我們可以通過製作自簽名的x509證書(由於對安全性要求不高,我們並不需要使用ca認證的證書),再呼叫x509的相關api來進行加密。接下來記錄一下整個流程。第一步,製作自簽名的證書
1.最簡單快捷的方法,開啟terminal,使用openssl(mac os x自帶)生成私鑰和自簽名的x509證書。
openssl req -x509 -out public_key.der -outform der -new -newkey rsa:1024 -keyout private_key.pem -days 3650
按照命令列的提示輸入內容就行了。
幾個說明:
public_key.der是輸出的自簽名的x509證書,即我們要用的。
private_key.pem是輸出的私鑰,用來解密的,請妥善保管。
rsa:1024這裡的1024是金鑰長度,1024是比較安全的,如果需要更安全的話,可以用2048,但是加解密代價也會增加。
-days:證書過期時間,一定要加上這個引數,預設的證書過期時間是30天,一般我們不希望證書這麼短就過期,所以寫上比較合適的天數,例如這裡的3650(10年)。
事實上,這一行命令包含了好幾個步驟(我研究下面這些步驟的原因是我手頭已經由乙個private_key.pem私鑰了,想直接用這個來生成x509證書,也就是用到了下面的2-3)
1)建立私鑰
openssl genrsa -out private_key.pem 1024
2)建立證書請求(按照提示輸入資訊)
openssl req -new -out cert.csr -key private_key.pem
3)自簽署根證書
openssl x509 -req -in cert.csr -out public_key.der -outform der -signkey private_key.pem -days 3650
2.驗證證書。把public_key.der拖到xcode中,如果檔案沒有問題的話,那麼就可以直接在xcode中開啟,看到證書的各種資訊。
第二步,使用public_key.der來進行加密。
1.匯入security.framework。
2.把public_key.der放到mainbundle中(一般直接拖到xcode就行啦)。
3.從public_key.der讀取公鑰。
4.加密。
下面是參考**(只能用於加密長度小於等於116位元組的內容,適合於對密碼進行加密。使用了arc,不過還是要注意部分資源需要使用cfrealse來釋放)
rsa.h
//// rsa.h
//#import
@inte***ce rsa : nsobject
- (nsdata *) encryptwithdata:(nsdata *)content;
- (nsdata *) encryptwithstring:(nsstring *)content;
@end
rsa.m
//// rsa.m
//#import "rsa.h"
@implementation rsa
- (id)init
nsdate *publickeyfilecontent = [nsdata datawithcontentsoffile:publickeypath];
if (publickeyfilecontent == nil)
certificate = seccertificatecreatewithdata(kcfallocatordefault, ( __bridge cfdataref)publickeyfilecontent);
if (certificate == nil)
policy = secpolicycreatebasicx509();
osstatus returncode = sectrustcreatewithcertificates(certificate, policy, &trust);
if (returncode != 0)
sectrustresulttype trustresulttype;
returncode = sectrustevaluate(trust, &trustresulttype);
if (returncode != 0)
publickey = sectrustcopypublickey(trust);
if (publickey == nil)
maxplainlen = seckeygetblocksize(publickey) - 12;
return self;
}- (nsdata *) encryptwithdata:(nsdata *)content
void *plain = malloc(plainlen);
[content getbytes:plain
length:plainlen];
size_t cipherlen = 128; // 當前rsa的金鑰長度是128位元組
void *cipher = malloc(cipherlen);
osstatus returncode = seckeyencrypt(publickey, ksecpaddingpkcs1, plain,
plainlen, cipher, &cipherlen);
nsdata *result = nil;
if (returncode != 0)
else
free(plain);
free(cipher);
return result;
}- (nsdata *) encryptwithstring:(nsstring *)content
- (void)dealloc
@end
使用方法:
rsa *rsa = [[rsa alloc] init];
if (rsa != nil)
else
iOS開發之常用的加密方法
開發中常用的加密方法 aes加密 加密過後以nsdata的形式存下來,如若想以nsstring的形式儲存,那對nsdata進行base64編碼 base64 使用者名稱密碼進行base64加密 md5加密 特點 輸入兩個不同的明文不會得到相同的輸出值,根據輸出值不能得到原始明文,即過程不可逆不能解密...
iOS開發中常用到的加密方式
1 base64 1.1 簡介 base64編碼的思想是是採用64個基本的ascii碼字元對資料進行重新編碼。它將需要編碼的資料拆分成位元組陣列。以3個位元組為一組。按順序排列24位資料,再把這24位資料分成4組,即每組6位。再在每組的的最高位前補兩個0湊足乙個位元組。這樣就把乙個3位元組為一組的資...
iOS開發中常用到的加密方式
1 base64 1.1 簡介 base64編碼的思想是是採用64個基本的ascii碼字元對資料進行重新編碼。它將需要編碼的資料拆分成位元組陣列。以3個位元組為一組。按順序排列24位資料,再把這24位資料分成4組,即每組6位。再在每組的的最高位前補兩個0湊足乙個位元組。這樣就把乙個3位元組為一組的資...