日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java代码生成密钥库_【Java加解密系列】- SM2生成密钥

發布時間:2023/12/31 java 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java代码生成密钥库_【Java加解密系列】- SM2生成密钥 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

國密算法是國家密碼局制定標準的一系列算法,包括SM1、SM2、SM3、SM4等。其中,SM1是采用硬件實現的,不予討論;SM2是非對稱加密算法;SM3是摘要算法;SM4是對稱加密算法。本系列文章將講解SM2、SM3、SM4 Java版本實現,所有的代碼實現都是基于BC庫來做的,本篇將講解如何生成SM2密鑰對。

BC庫是實現加解密算法的基礎庫,我們首先要在代碼里引入BC庫,如下:

org.bouncycastle

bcprov-jdk15on

1.59

SM2是非對稱加密,密鑰是由公鑰和私鑰組成的密鑰對。在使用SM2算法進行加解密前,必須要先生成密鑰對。代碼如下:

/*** SM2算法生成密鑰對* @return 密鑰對信息*/

public static KeyPair generateSm2KeyPair() {

try {

final ECGenParameterSpec sm2Spec = new ECGenParameterSpec("sm2p256v1");

// 獲取一個橢圓曲線類型的密鑰對生成器

final KeyPairGenerator kpg = KeyPairGenerator.getInstance("EC", new BouncyCastleProvider());

SecureRandom random = new SecureRandom();

// 使用SM2的算法區域初始化密鑰生成器

kpg.initialize(sm2Spec, random);

// 獲取密鑰對

KeyPair keyPair = kpg.generateKeyPair();

return keyPair;

} catch (Exception e) {

LOGGER.error("generate sm2 key pair failed:{}", e.getMessage(), e);

throw new BusinessException("生成密鑰對失敗");

}

}

代碼依賴對象都是BC庫和java security庫里的,只有BusinessException是自己定義的業務異常,可自行定義即可。測試代碼如下:

@Test

public void generateSm2KeyPairTest() {

KeyPair keyPair = SecretKeyUtils.generateSm2KeyPair();

System.out.println(Base64Utils.encode(keyPair.getPrivate().getEncoded()));

System.out.println(Base64Utils.encode(keyPair.getPublic().getEncoded()));

}

Base64Utils是我自己寫的Base64工具類,實現方式有很多,自己在網上找下即可,也可轉成Hex輸出。執行測試代碼,得到Base64之后的密鑰對如下:

MIGTAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBHkwdwIBAQQgVGXZII9dj8Ou8FzrnvXOletkk1oNrJ5JLxkQu8IVl0mgCgYIKoEcz1UBgi2hRANCAARfJ7o8rj0aOe9reb8Ink8gzNmVrIypxs1Upt8XSWWVW/ighjvKWD1D4HMq14uwuBMNJq/mldwcx0+wvW1sOpes

MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEXye6PK49Gjnva3m/CJ5PIMzZlayMqcbNVKbfF0lllVv4oIY7ylg9Q+BzKteLsLgTDSav5pXcHMdPsL1tbDqXrA==

總結

以上是生活随笔為你收集整理的java代码生成密钥库_【Java加解密系列】- SM2生成密钥的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。