還有那些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演算法中,我們必須把原始訊息 字串,檔案等 轉換成位...