iOS下使用SHA1WithRSA演算法加簽原始碼

2021-07-02 17:51:53 字數 2603 閱讀 2330

還有那些keystore,pkcs,p7b,p12後面介紹

rsa演算法有2個作用乙個是加密乙個是加簽。從這幾個函式中,我們可以看到,我們第一種是使用公鑰能在客戶端:加密資料,以及伺服器端用私鑰解密。

第二個就是用私鑰在客戶端加簽,然後用公鑰在伺服器端用公鑰驗籤。第一種完全是為了加密,第二種是為了放抵賴,就是為了防止別人模擬我們的客戶端來攻擊我們的伺服器,導致癱瘓。

1.rsa加密解密:

(1)獲取金鑰,這裡是產生金鑰,實際應用中可以從各種儲存介質上讀取金鑰 (2)加密 (3)解密

2.rsa簽名和驗證

(1)獲取金鑰,這裡是產生金鑰,實際應用中可以從各種儲存介質上讀取金鑰 (2)獲取待簽名的hash碼 (3)獲取簽名的字串 (4)驗證

3.公鑰與私鑰的理解:

(1)私鑰用來進行解密和簽名,是給自己用的。

(2)公鑰由本人公開,用於加密和驗證簽名,是給別人用的。

(3)當該使用者傳送檔案時,用私鑰簽名,別人用他給的公鑰驗證簽名,可以保證該資訊是由他傳送的。當該使用者接受檔案時,別人用他的公鑰加密,他用私鑰解密,可以保證該資訊只能由他接收到。

首先加入標頭檔案

#import

#import

#import

#import "nsdata+base64.h"

#define kchosendigestlengthcc_sha1_digest_length  // sha-1訊息摘要的資料位數160位 

[objc]view plain

copy

- (nsdata

*)gethashbytes:(

nsdata

*)plaintext   

[objc]view plain

copy

-(nsstring

*)signthedatasha

1withrsa:(

nsstring

*)plaintext  

cfdictionaryref identitydict = cfarraygetvalueatindex(items, 0

);  

seckeyref privatekeyref=nil

;  signedbytessize = seckeygetblocksize(privatekeyref);  

nsdata

*plaintextbytes = [plaintext

datausingencoding

:nsutf

8stringencoding];  

signedbytes = malloc( signedbytessize

* sizeof

(uint

8_t) ); 

// malloc a buffer to hold signature.

memset((void

void

*)signedbytes, 0x

0, signedbytessize);  

sanitycheck = seckeyrawsign(privatekeyref,  

ksecpaddingpkcs1

sha1

,  (const

uint8_t

*)[[

self

gethashbytes

:plaintextbytes]

bytes

],  

kchosendigestlength,  

(uint8_t

*)signedbytes,  

&signedbytessize);     

if(sanitycheck == noerr)  

else

if(signedbytes)  

nsstring

*signatureresult=[nsstring

stringwithformat

:@"%@"

,[signedhash

base64encodedstring

]];  

return

signatureresult;  

}  

[objc]view plain

copy

-(seckeyref)getpublickey  

return

sectrustcopypublickey(mytrust);  

}  -(nsstring

*)rsaencrypotothedata:(

nsstring

*)plaintext  

else

}  if(cipherbuffer)  

nsstring

*encrypotoresult=[nsstring

stringwithformat

:@"%@"

,[encrypteddata

base64encodedstring

]];  

return

encrypotoresult;  

}  

asp下sha1加密函式

sha1.asp檔案 function sha1 data sha1 hex sha1 data end function 呼叫檔案 response.write sha1 abcdef 得到的結果為 1f8ac10f23c5b5bc1167bda84b833e5c057a77d2 asp.net的...

如何使用sha1方法

兩年前,也使用過sha1方法,但是隨著時間的遠去,遺忘了它的使用方法,這一次使用sha1,搞了半天sha1結果都是錯了,剛才被同事提醒了一下,才想起sha1的使用方法,趕緊記下來,進行sha1計算的資料長度,應該是可以無限大的,所以要使用迭代的思想。第一 每一次sha1計算的時候,都要重啟,所以每一...

如何使用java進行sha1加密

安全雜湊演算法 secure hash algorithm 主要適用於數字簽名 標準 digital signature standard dss 裡面定義的數字簽名演算法 digital signature algorithm dsa 在sha1演算法中,我們必須把原始訊息 字串,檔案等 轉換成位...