當前位置:成語大全網 - 書法字典 - 前端RSA密鑰生成和加密及解密窗口。crypto

前端RSA密鑰生成和加密及解密窗口。crypto

Crypto API支持常用的rsa和aes加解密,這裏介紹rsa的應用。

Window.crypto需要chrome 37、ie 11、safari 11支持所有API,基本的加密解密都可以在safari 7中完成。

Crypto.subtitle.generatekey(算法,可提取,密鑰用法),其中:

1.算法參數根據不同的算法填入相應的參數對,rsa需要填入RsaHashedKeyGenParams對象,該對象包括:

2.extractable壹般為true,表示是否允許將密鑰導出為文本。

3.KeyUsage是壹個數組,可以加密、解密、簽名等。

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

window . crypto . subtitle . export key(格式,密鑰),其中:

1可選擇Raw、pkcs8、spki、jwk。格式,spki和pkcs8可以選擇用於我們的公鑰導出。

2.該密鑰是上述密鑰對的私鑰或公鑰。

該函數返回壹個promise對象,結果是壹個ArrayBuffer,這是pem風格的。

window . crypto . conductive . import key(

格式,

關鍵數據,

算法,

可提取的,

關鍵用法

),其中:

1可選擇Raw、pkcs8、spki、jwk。格式,對應的是上壹代。我們在導入公鑰時選擇spki,在導入私鑰時選擇pkcs8。

2.keyData,也就是window . crypto . finded . export key獲取的ArrayBuffer,因為我們這裏壹般只有pem文本,所以還是要轉換成ArrayBuffer。

3.算法我們這裏是rsa,需要填充壹個RsaHashedImportParams對象,對應crypto . congregate . generate key需要的RsaHashedKeyGenParams對象,包含:

4.extractable與crypto . finessive . generate key相同

5.密鑰用法與crypto . finded . generate key相同

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

Encrypt crypto.subtitle.encrypt(算法,密鑰,數據),其中:

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

2.key是公鑰的CryptoKey對象。

3.數據是BufferSource對象,不能是直接加密的字符串。

結果是壹個ArrayBuffer,可以使用window . btoa(string . from charcode(...新uint8array (e))。

解密crypto.subtitle.decrypt(算法,密鑰,數據)基本和加密壹樣,數據對應加密返回的ArrayBuffer。如果base64字符串是從後端加密的,就需要轉換成Uint8Array。

返回值與加密相同。