原创 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的多態性。當然,通過動態綁定,因爲可以消除用於多選場景的條件邏輯,從而可