當前位置:編程學習大全網 - 源碼下載 - 前端RSA密鑰生成和加解密window.crypto

前端RSA密鑰生成和加解密window.crypto

crypto API支持常用的rsa、aes加解密,這邊介紹rsa的應用。

window.crypto需要chrome 37版本,ie 11,safari 11才支持全部API而基本的加解密在safari 7就可以。

crypto.subtle.generateKey(algorithm, extractable, keyUsages) ,其中:

1. algorithm 參數根據不同算法填入對應的參數對,rsa需要填入 RsaHashedKeyGenParams 對象包含有:

2. extractable 壹般是true,表示是否允許以文本的方式導出key

3. keyUsages 是壹個數組,裏面可選 encrypt decrypt sign

函數結果返回壹個promise對象,如果是對稱加密會得到壹個密鑰 CryptoKey 類型,這邊rsa會得到壹個密鑰對 CryptoKeyPair ,它有2個 CryptoKey 成員, privateKey publicKey ,我們導出密鑰為文本或者加解密都將通過這2個成員對象。

window.crypto.subtle.exportKey(format, key) ,其中:

1. format 可選 raw pkcs8 spki jwk ,我們這邊在導出公鑰時選 spki ,私鑰選 pkcs8

2. key 就是上面 CryptoKeyPair privateKey 或者 publicKey

函數返回壹個promise對象,結果是壹個ArrayBuffer,這邊轉成pem風格。

window.crypto.subtle.importKey(

format,

keyData,

algorithm,

extractable,

keyUsages

) ,其中:

1. format 可選 raw pkcs8 spki jwk ,對應之前生成時的選擇,我們這邊在導入公鑰時選 spki ,私鑰選 pkcs8

2. keyData ,即 window.crypto.subtle.exportKey 獲得的ArrayBuffer,由於在這裏時我們壹般只有pem文本的,所以還需要做轉換成ArrayBuffer。

3. algorithm 這邊我們是rsa,需要填入壹個 RsaHashedImportParams 對象,這邊對應 crypto.subtle.generateKey 所需的 RsaHashedKeyGenParams 對象,含有:

4. extractable crypto.subtle.generateKey

5. keyUsages crypto.subtle.generateKey

函數返回壹個promise對象,結果是壹個 CryptoKey

加密 crypto.subtle.encrypt(algorithm, key, data) ,其中:

1. algorithm ,加解密只支持RSA-OAEP不支持RSAES-PKCS1-v1_5

2. key 即公鑰的 CryptoKey 對象

3. data 是壹個 BufferSource 對象,不能直接是要加密的字符串。

結果是壹個ArrayBuffer,可以使用window.btoa(String.fromCharCode(...new Uint8Array(e)))輸出為base64字符串

解密 crypto.subtle.decrypt(algorithm, key, data) ,基本同加密,這邊data對應為加密返回的ArrayBuffer,如果是base64字符串比如從後端加密過來的,就需要轉為Uint8Array。

返回值同加密

  • 上一篇:PSP俠盜獵車手罪惡之城金手指
  • 下一篇:太陽能路燈帶桿遙控器是哪種型號
  • copyright 2024編程學習大全網