原创 iOS中copy 學習筆記

copy表達的屬性與strong類似。但是設置方法並不保留新值,而是將其copy,當屬性爲NSString時,經常用此特質來保護其封裝性,因爲傳遞給設置方法的新值可能指向NSMutableString類的實例。但是NSMutabl

原创 runtime 使用情況(一)

動態運行時添加方法,可能大家都知道,但是何時使用,可能不是很清楚。其中一種運用情況就是支持新舊兩種API。 - (void)doSomething { // legacy code goes here... } - (v

原创 HMAC-MD5算法原理及實現

以下是分析節選,對於更詳細的描述可以查閱RFC2104文檔。 HMAC需要一個加密用散列函數(表示爲H)和一個密鑰K。 假設H是一個將數據塊用一個基本的迭代壓縮函數來加密的散列函數。 用B來表示數據塊的長。(以上說提到的散列函數的分

原创 RSA算法

RSA算法是最常用的非對稱加密算法。其既可以用於加密,也可以用於數字簽名。RSA的安全基於大數分解的難度。 公鑰KU n:兩素數p和q的乘積(p,q必須保密) e:與(p-1)(q-1)的乘積互質 私鑰KR d:e-1(mo

原创 網絡安全

作者:郭無心 鏈接:https://www.zhihu.com/question/19816240/answer/63371634 來源:知乎 著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。在當前世界中,網絡已成爲不

原创 MD5加密算法

MD5是一個不可逆的安全的散列算法,不同的輸入不會產生相同的輸出,根據輸出得不到輸入。 MD5算法主要運用在數字簽名、文件完整性以及口令加密等方面。

原创 Block的循環引用

Block是iOS 4開始導入的,類似lambda表達式,但是在使用Block的過程中,很有可能引起引用循環。如下圖所示 當我們遇到這種情況時,可以有兩種解決方案。 __block修飾符 ... __block id temp

原创 多線程中NSLock

//線程1 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ [lock lock];

原创 黑幕背後的Block

我們知道在Block使用中,Block內部能夠讀取外部局部變量的值。但我們需要改變這個變量的值時,我們需要給它附加上__block修飾符。 __block另外一個比較多的使用場景是,爲了避免某些情況下Block循環引用的問題,我們也可以給

原创 hmac-md5算法

+ (NSString *)hmac_MD5:(NSString *)plaintext withKey:(NSString *)key { constchar *cKey = [key cStringUsingEncoding

原创 利用openssl進行RSA簽名

NSString *RSA_EVP_Sign(NSString *data) { unsigned char *Str=(unsigned char *)[data UTF8String];//utf8編碼轉換成c的字符

原创 __weak & autoreleasepool

__weak修飾符相對於__strong修飾,是爲了解決循環引用的。 @interface Test: NSObject { id __strong obj_; } - (void)setObject:(id __stro

原创 利用openssl庫進行RSA加密

NSString *RSA_encrypt(NSString *data) { unsigned char *str=(unsigned char*)[data UTF8String]; //把要加密的數據進行utf8編碼

原创 RSA簽名和驗簽過程

1.簽名過程: client提取消息m的消息摘要h(m),並使用自己的私鑰對摘要h(m)進行加密,生成簽名s。client將簽名s和消息m一起,使用server發過來的公鑰進行加密,獲得密文c,發送給server。 2.驗簽過程: s

原创 Objective-C 動態綁定 學習筆記

動態綁定是指在運行程序時(而不是在編譯時)將消息與方法對應起來的處理過程。許多對象可能會實現相同的方法,調用方法的方式會動態的變化。因此,動態綁定實現了OOP的多態性。當然,通過動態綁定,因爲可以消除用於多選場景的條件邏輯,從而可