java如何使用JWE進行加密

JWE全稱是Json Web Encripytion ,即json web 加密,其本身是由一系列標準構成的,本文章講解的是采用軟加密的方式:

JWE加密分為RSA公鑰和EC公鑰兩種模式,RSA公鑰采用的是傳統(tǒng)大質(zhì)數(shù)相乘原理,ECC公鑰為橢圓曲線算法原理;相對來說ECC模式要比RSA模式快;當RSA加密需要的秘鑰長度越來越長時,相應的運算也越來越耗時,這幾乎呈指數(shù)級增長;ECC模式要比RSA模式好很多,當所需的秘鑰長度越來越長時,ECC的cpu消耗是線性增長的。

本文章講解的是RSA的方式進行jwe的加密。

使用JWE加密時需要引入的maven依賴包:

<dependency>

<groupId>com.nimbusds</groupId>

<artifactId>nimbus-jose-jwt</artifactId>

<version>8.20</version>

</dependency>

需要使用nimbusds提供的JWE加密組件,廢話不多說,直接上代碼:

private static String jweEncryption(Key publicKey, String payload)

? ? ? throws Exception {


? ? System.out.println("Payload before encryption :: " + payload);

? ? /*Encryption*/

? ? JWEHeader.Builder builder =

? ? ? ? new JWEHeader.Builder(JWEAlgorithm.RSA_OAEP, EncryptionMethod.A128GCM);

? ? builder.keyID("encryptKid");

? ? JWEHeader header = builder.build();

? ? JWEEncrypter encryptedJWE = new RSAEncrypter((RSAPublicKey) publicKey);

? ? JWEObject jweObject = new JWEObject(header, new Payload(payload));

? ? jweObject.encrypt(encryptedJWE);

? ? String serializedJWE = jweObject.serialize();

? // System.out.println("Payload after Encryption:: " + serializedJWE);

? return serializedJWE;

? }

JWE是由系列標準組成的,JWEHeader就是java實現(xiàn)這一標準的一個類,關于JWE標準的文章可以參照下面的的連接:

http://www.mamicode.com/info-detail-2865896.html

JWEHeader里面有各種各樣的參數(shù),比較重要的有alg,enc,kid,

alg表示使用的的公鑰算法模式,我們使用的是alg=RSA-OAEP;

alg和使用的公鑰有關,如果使用的是RSA公鑰,alg可以取值:RSA1_5,RSA_OAEP,RSA-OAEP-256;如果使用的是ECC公鑰,則取值可能為:A128KW,A192KW,A256KW等

enc表示的是使用的加密分組是多少位,并采用哪種方式,enc=A128GCM,表示使用128位分組的GCM加密方式。

kid用來標識使用的公鑰,一般由解密方提供,用來告訴解密方用的哪把秘鑰。

最后是JWE加密的輸出,JWE加密的輸入也是有一系列的標準定義的:一般密文輸出都是如下格式:

輸出的JWE?Compact序列為:BASE64URL(UTF8(JWE Protected Header)) || ’.’ || BASE64URL(JWE Encrypted Key) || ’.’ ||BASE64URL(JWE Initialization Vector) || ’.’ || BASE64URL(JWE Ciphertext) || ’.’ || BASE64URL(JWE Authentication Tag)

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容