国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

java 國(guó)密算法工具類(支持SM2 SM3 SM4)

這篇具有很好參考價(jià)值的文章主要介紹了java 國(guó)密算法工具類(支持SM2 SM3 SM4)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言

工具采用BC庫實(shí)現(xiàn),支持前后端加解密,前端建議使用sm-crypto文章來源地址http://www.zghlxwxcb.cn/news/detail-541626.html

引入pom依賴

        <dependency>
            <groupId>cn.zyjblogs</groupId>
            <artifactId>sm-crypto-utils</artifactId>
            <version>1.0.3</version>
        </dependency>

基本使用如下

  • 國(guó)密SM2算法
public class test {
public static void main(String[] args) {
        String data = "dPhq2XdoMcgD5m7M0I51SX7MkzMerWMcPdBdv/tX8B5jOyM28n+CcXUn721/9N0ELVgC2P0eBRn4jD04rPScJd5izcC7+xXT5LUwbV2S6wc0g2RC8nkuZITc4rdrACPvNxd18b6y";
        String pub = "0417f347d7fa08ae6ad9bf8ef6ac6c313810e05044290f7c18dc9b913b252603505cf7cdbf7ac7d88de508e78bbc2d74cb28c0a90724ed4b751cc69bdfe55b68de";
        String pri = "73d76cf4f553535d6ec45478fb1581baa0c83e166b347af10ab129966d3f187f";
        String key = "0123456789abcdeffedcba9876543210";
        try {
            String decrypt2 = SM2.decrypt(pri, "BCWhJJ0BFPt/RuhS37sk22/5GuemkzG7kt+CLwRSz34taiKPjc0TDoY959dCf7C2cZJ2uzLoqRmcH/pV7uWGhPzTIZmKM8wPpVIeuN616dNVm+5/YpaQfcawis6KpJOeeU4fcyrYf9wcawtkow==", 1, EncodeType.BASE64, EncodeType.UTF8);
            System.out.println("-------------");
            System.out.println(decrypt2);
            String encrypt1 = SM2.encrypt(pub, decrypt2);
            System.out.println("-------------");
            System.out.println(encrypt1);
            String decrypt3 = SM2.decrypt(pri, encrypt1);
            System.out.println("aaa:" + decrypt3);
            String decrypt4 = SM2.encrypt(pub, decrypt3, 1, EncodeType.UTF8, EncodeType.BASE64);
            System.out.println(decrypt4);
            System.out.println("-----------");
            String decrypt5 = SM2.decrypt(pri, decrypt4, 1, EncodeType.BASE64, EncodeType.BASE64);
            System.out.println(decrypt5);
            String decrypt5_1 = SM2.encrypt(pub, decrypt5, 1, EncodeType.BASE64, EncodeType.BASE64);
            System.out.println(decrypt5_1);
            String decrypt5_2 = SM2.decrypt(pri, decrypt5_1, 1, EncodeType.BASE64, EncodeType.BASE64);
            System.out.println(decrypt5_2);
            System.out.println(new String(Base64.getDecoder().decode(decrypt5)));
            String decrypt6 = SM2.encrypt(pub, decrypt5, 1, EncodeType.BASE64, EncodeType.HEX);
            System.out.println(decrypt6);
            System.out.println("-----------");
            String decrypt7 = SM2.decrypt(pri, decrypt6, 1, EncodeType.HEX, EncodeType.UTF8);
            System.out.println(decrypt7);
            String decrypt8 = SM2.decrypt(pri, data, 1, EncodeType.BASE64, EncodeType.UTF8);
            System.out.println(decrypt8);
            String datanew = "BPCv4lM/sVXzEJ7uFkXrvuKUVFS3EU9uCkV9vhgJQb92cY3FWfIa1M1UtYxkbfleEdiZHZooh5DV3HaakkYsCTbR/lKF4FC3ZplGGf9rCbCuovf7fFf5TJwX2m83qkNMTuW4o9QdjOQu4MiFtYbTMMTSb/0kNKHkrT8mCSY+6yLg7XIHmzepoGiWhQ2KB9diF066YzjKNDGbP3u9/zoQBCFKr190G7F6NH042kfLPRrpV3IkewJbNKGCCQ0SIvNJ475beYq5jpRbug2WOsR8qLEsPsIl7SPXh0ezB1hLwgmqFqM/B3QbobKP+lFmtbjjIumLgdGM9OzmG82TFZM3k0piIYQPS6JPHjR3nqrnxpwYxn2bKUifnrrrM8smyoa99BzJ4IPnZ7/3oxLwkRFnMee8oyMy1WCab0k5OKmAM/dk2weflyhXyY5mxGYHjdjpsj9ipOcKjqF6LKobMxSAOpn+pRfywvJr/CKE1dcq7k1gK/xZozQVqyENoM3BEyVEYfEUHrI1pxG8/2ugYYXIN4jX6XqR8COxnJOS8XuPi8Ukqsx/E3EwgWEbI3PvtRRaiI4RNWyc1oMyNDr8Al5caf67cUo2pasoF8IrUlZtePBEAmITHfzVm9sCfGz4eNw5b2a5YSLofCYX7R6C0b/+69uutyhmLb3Na9TOyseTEYJcf0pzO8DHdWZDTldH8+swARdulURCBR3AMs2ePDnfJwMcEyNt1jpacVDSRPIVhxOcgdeD3juaYpiEYdVTPBHv+RJoOi6pv87ZheeDejjpGUMLAGEC/P+SpGdG8IT7THEPw16/hNK/lzqAzmYa7lkAH2WycWbnaBed3bHJbJBNjP9DsBpAf3V/PGreXNWeD66g+gCQDhyOUdiWqoaEoCLA7nkOcQqEeDZNegQn5ZfU/cW4yW1sxfb3CNzqxJaA/qayon+BeCYmy3FpA0SIkAbA0/qTG7VWg4u4kAQBG+FZ+lJ9Eaj9JaFiCgqfQRBMEoLuVdH24UeRljIfRptuYDcPydCFRzDWhYqwguPeGluEb9JO8eESZ+waX48xtniMvxbQ0CzfDlMWJwO9EiPJyIj2b86/ibBfSq9vuWwSdeLLL2Jvjn5LB9cwzSU8yQzLgle9YGSC0sbQIMuyFHUhDUVyFTVPE3/bYpotuetoeQVMYvLe9H73825Q6PxY+CCMHb0Jqjva2JAf6emYGx1vb5MGoJzoxz/7lSxJ56I9yMfrwLMljToMSufcV+bhQYb6r468qtQ10eXlKom/I8ZqZIJHsIaZBxsxJe1UyxqGitasg55gqNLLDwv+6UmnvGT/B6g9bmfc363/gO5mQlJfZSlpUodZrXMCYZmNI1ZZFRQbu5aEdtL9M2lXeCnTJa2GDOqpbG5I3aWVcepUcCsx4375bJOo3g24dwhzTCyh7/dW9sPhqb3SSXb/l+JxFzUoBXzxQgpBzakwq1uGrCKYPkNfYrmxRej87ZGgQFGlCVjEUHwRhvnkLHTXeP2f3b8zCeu+6us=";
            String decrypt9 = SM2.decrypt(pri, datanew, 1, EncodeType.BASE64, EncodeType.UTF8);
            System.out.println(decrypt9);
            SM2KeyPair sm2KeyPair = generateSm2Keys(true);
            System.out.println("公鑰\n" + sm2KeyPair.getPublicKey());
            System.out.println("私鑰\n" + sm2KeyPair.getPrivateKey());
            String a = SM2.encrypt(sm2KeyPair.getPublicKey(), "好吃啊");
            System.out.println(a);
            System.out.println(SM2.decrypt(sm2KeyPair.getPrivateKey(), a));
            String data1 = "c4eba3e104f1858a4ad0eeea125537e80ad28d10e6b084c26a1c318dba4bec334bf246cdd3900bc35e20a2c8bf6948a050f5c9077b0617db7d98489c37f3cc8aebebf98a39c0f127e6d37a8ec31f3968f07c7a01b8d3e1a554d53b75de8ede6d50050d8a1c60e976e74829b0f32bc049edf7";
            System.out.println(SM2.decrypt("69A124C827FA42573FF1047368BA8428C04A04B5B947BBD202956CF1A78D1FB0", data1, 1, EncodeType.HEX, EncodeType.UTF8));
            String sign = SM2.sign("69A124C827FA42573FF1047368BA8428C04A04B5B947BBD202956CF1A78D1FB0", data1);
            System.out.println("私鑰簽名:\n" + sign);
            System.out.println(SM2.verify("032AB168CD73ED25824DB20B5F190C7C54971BC821450DEE0AC84C779CF3A9F897", data1, sign));
            String base64 = "BTcOfUO9+YxUeVl3nAkrebsu7H1scPwAppe0slpHLSMa4+2GhvW4ZTr++8AFT5pND3rcLtU76bzoIencvojqhvV8drMjGA6yPbp+6dg/KABNcE0SRwHhzNcTrf5SxTC4yI1TIuvo";
            String decrypt10 = SM2.decrypt(pri, base64, 1, EncodeType.BASE64, EncodeType.UTF8);
            System.out.println(decrypt10);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}
  • 國(guó)密SM3算法
public class test {
    public static void main(String[] args) {
        String a = SM3.digest("sm3");
        System.out.println(a);
        System.out.println(verify("sm3", a));
    }
}
  • 國(guó)密SM4算法使用
public class test {
    public static void main(String[] args) {
        String iv = SM4.generateKey();
        System.out.println(iv);
        System.out.println("加密:---------");
        String v = SM4.encrypt(iv, "晚日照空磯,采蓮承晚暉。\n" +
                "                風(fēng)起湖難渡,蓮多采未稀。\n" +
                "                棹動(dòng)芙蓉落,船移白鷺飛。\n" +
                "                荷絲傍繞腕,菱角遠(yuǎn)牽衣。", iv);
        System.out.println(v);
        String digest = SM3.digest(v);
        System.out.println(digest);
        System.out.println("解密:---------");
        System.out.println(SM4.decrypt(iv, v, iv));
        System.out.println("解密:---------");
        System.out.println(SM4.decrypt("864669EB9E57E15C923E1003CBEA8872", "6a05d74bda1f2a41c0b47605b06ef638", "fedcba98765432100123456789abcdef"));
    }
}

到了這里,關(guān)于java 國(guó)密算法工具類(支持SM2 SM3 SM4)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • vue中使用國(guó)密算法SM2、SM3、SM4

    gm-crypto相關(guān)文檔:https://gitcode.net/mirrors/byte-fe/gm-crypto?utm_source=csdn_github_accelerator vue3+element ui例子:https://gitee.com/huanglgln/vue-sys-manage-el ?vue3+view ui例子:https://gitee.com/huanglgln/vue-sys-manage ?vue3+Ant Design Vue ui例子:https://gitee.com/huanglgln/vue-sys-manage-adv?

    2024年02月15日
    瀏覽(34)
  • Python實(shí)現(xiàn)國(guó)家商用密碼算法sm2/sm3/sm4/sm9(國(guó)密)

    2010 年開始,我國(guó)國(guó)家密碼管理局就已經(jīng)開始陸續(xù)發(fā)布了一系列國(guó)產(chǎn)加密算法,這其中就包括 SM1、SM2、SM3 、SM4、SM7、SM9、ZUC(祖沖之加密算法)等,SM 代表商密,即商業(yè)密碼,是指用于商業(yè)的、不涉及國(guó)家秘密的密碼技術(shù)。SM1 和 SM7 的算法不公開,其余算法都已成為 ISO/IEC

    2024年02月15日
    瀏覽(32)
  • 新手入門 | 掌握國(guó)密算法:新手指南: SM2 / SM3 / SM4密碼算法詳解

    在密碼學(xué)領(lǐng)域,有多種加密與簽名算法,它們?cè)谛畔踩I(lǐng)域發(fā)揮著舉足輕重的作用。如今,隨著互聯(lián)網(wǎng)的快速發(fā)展,網(wǎng)絡(luò)安全已經(jīng)成為各類信息系統(tǒng)完整性、可用性、保密性的重要保障,越來越多的國(guó)產(chǎn)密碼算法得到了廣泛的應(yīng)用與關(guān)注。在本文中,我們將重點(diǎn)介紹三個(gè)經(jīng)

    2024年02月12日
    瀏覽(36)
  • react+vue 前端國(guó)密算法sm2、sm3 、sm4的js ts實(shí)現(xiàn)

    1. 簡(jiǎn)單介紹下SM2 和 SM3 SM2 算法:是一種公鑰加密算法,它的密鑰長(zhǎng)度為 256 位,安全性較高。可用于數(shù)字簽名、密鑰協(xié)商等場(chǎng)景。 SM3 算法:是一種對(duì)稱加密算法,用于消息摘要和數(shù)字簽名等場(chǎng)景。它的密鑰長(zhǎng)度為 256 位,安全性較高。SM3 算法與 SM2 算法相互配合,提高了整體

    2024年01月19日
    瀏覽(33)
  • 前端國(guó)密加解密使用方法SM2、SM3、SM4

    ? ?國(guó)密算法,即國(guó)家商用密碼算法。是由國(guó)家密碼管理局認(rèn)定和公布的密碼算法標(biāo)準(zhǔn)及其應(yīng)用規(guī)范,其中部分密碼算法已經(jīng)成為國(guó)際標(biāo)準(zhǔn)。如SM系列密碼,SM代表商密,即商業(yè)密碼,是指用于商業(yè)的、不涉及國(guó)家秘密的密碼技術(shù)。 ? ? ?不多廢話直接上干貨 項(xiàng)目中 可能存在

    2023年04月09日
    瀏覽(102)
  • vue普通加密以及國(guó)密SM2、SM3、sm4的使用

    sm-crypto:https://www.npmjs.com/package/sm-crypto 1. SM2是非對(duì)稱加密算法 它是基于橢圓曲線密碼的公鑰密碼算法標(biāo)準(zhǔn),其秘鑰長(zhǎng)度256bit,包含數(shù)字簽名、密鑰交換和公鑰加密,用于替換RSA/DH/ECDSA/ECDH等國(guó)際算法。可以滿足電子認(rèn)證服務(wù)系統(tǒng)等應(yīng)用需求,由國(guó)家密碼管理局于2010年12月17號(hào)

    2023年04月09日
    瀏覽(24)
  • 國(guó)密SM2/SM3算法

    分類 1、SM1是一種分組加密算法 對(duì)稱加密算法中的分組加密算法,其分組長(zhǎng)度、秘鑰長(zhǎng)度都是128bit,算法安全保密強(qiáng)度跟 AES 相當(dāng),但是算法不公開,僅以IP核的形式存在于芯片中,需要通過加密芯片的接口進(jìn)行調(diào)用。 采用該算法已經(jīng)研制了系列芯片、智能IC卡、智能密碼鑰匙

    2024年02月05日
    瀏覽(22)
  • 國(guó)密算法SM2、SM3的使用

    1. SM2是非對(duì)稱加密算法 ????????它是基于橢圓曲線密碼的公鑰密碼算法標(biāo)準(zhǔn),其秘鑰長(zhǎng)度256bit,包含數(shù)字簽名、密鑰交換和公鑰加密,用于替換RSA/DH/ECDSA/ECDH等國(guó)際算法。可以滿足電子認(rèn)證服務(wù)系統(tǒng)等應(yīng)用需求,由國(guó)家密碼管理局于2010年12月17號(hào)發(fā)布。 2.SM3是一種密碼雜湊

    2024年02月06日
    瀏覽(20)
  • 密碼算法(SM1、SM2、SM3、SM4、同態(tài)加密、密態(tài)計(jì)算、隱私計(jì)算和安全多方計(jì)算)

    密碼算法(SM1、SM2、SM3、SM4、同態(tài)加密、密態(tài)計(jì)算、隱私計(jì)算和安全多方計(jì)算)

    SM1、SM2、SM3和SM4 為了保障商用密碼的安全性,國(guó)家密碼局制定了一系列密碼標(biāo)準(zhǔn),包括:SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、祖沖之密碼算法(ZUC) 等。 SM1、SM4、SM7、祖沖之密碼(ZUC)是對(duì)稱算法。 SM2、SM9是非對(duì)稱算法。 SM3是哈希算法。 SM1、SM7算法不公開,調(diào)用該算法時(shí),

    2024年02月03日
    瀏覽(26)
  • OpenSSL 3.1.1 ECC 加密、解密、簽名、驗(yàn)簽(國(guó)密 sm2、sm3)

    openssl 3 默認(rèn)廢棄了 舊版本 (opessl 1.x) 的部分api 導(dǎo)致部分舊ecc 代碼無法使用(可以通過配置編譯選項(xiàng)打開) ,這里展示如何使用新接口用ECC 進(jìn)行加密解密。 新接口是真的方便,基本上你都不需要懂啥密碼學(xué)知識(shí),對(duì)我們這種密碼白癡來說太好了 頭文件 生成密鑰對(duì) 導(dǎo)出公

    2024年02月05日
    瀏覽(54)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包