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

Java:Hutool工具箱之Hutool-crypto加密解密

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

hutool-crypto,java,java,開發(fā)語言

文檔

  • https://hutool.cn/docs/#/crypto/概述

重點(diǎn)單詞:

symmetric [s?'metr?k] adj. 對(duì)稱的
asymmetric [?e?s??metr?k] adj. 不對(duì)稱
digest [da??d?est] n. 摘要

摘自文檔

加密分為三種:

對(duì)稱加密(symmetric),例如:AES、DES等
非對(duì)稱加密(asymmetric),例如:RSA、DSA等
摘要加密(digest),例如:MD5、SHA-1、SHA-256、HMAC等

hutool-crypto針對(duì)這三種加密類型分別封裝,并提供常用的大部分加密算法。

對(duì)于非對(duì)稱加密,實(shí)現(xiàn)了:

RSA
DSA

對(duì)于對(duì)稱加密,實(shí)現(xiàn)了:

AES
ARCFOUR
Blowfish
DES
DESede
RC2
PBEWithMD5AndDES
PBEWithSHA1AndDESede
PBEWithSHA1AndRC2_40

對(duì)于摘要算法實(shí)現(xiàn)了:

MD2
MD5
SHA-1
SHA-256
SHA-384
SHA-512
HmacMD5
HmacSHA1
HmacSHA256
HmacSHA384
HmacSHA512

其中,針對(duì)常用到的算法,模塊還提供SecureUtil工具類用于快速實(shí)現(xiàn)加密。

依賴

<dependency>
   <groupId>cn.hutool</groupId>
    <artifactId>hutool-crypto</artifactId>
    <version>5.8.10</version>
</dependency>

1、摘要算法 digest

以MD5 為例

package com.mouday;

import cn.hutool.crypto.SecureUtil;

public class Demo {
    public static void main(String[] args) {
        String s = SecureUtil.md5("666");
        System.out.println(s);
        // fae0b27c451c728867a567e8c1bb4e53
    }
}

2、對(duì)稱加密 symmetric

以AES 加密為例

package com.mouday;

import cn.hutool.crypto.KeyUtil;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.symmetric.SymmetricAlgorithm;
import cn.hutool.crypto.symmetric.SymmetricCrypto;

public class Demo {
    public static void main(String[] args) {
        // 16位自定義密碼
        String key = "1234567891011123";
        String content = "明文";

        // 生成密鑰
        byte[] byteKey = SecureUtil.generateKey(SymmetricAlgorithm.AES.getValue(), key.getBytes()).getEncoded();

        SymmetricCrypto aes = SecureUtil.aes(byteKey);

        // 加密
        String encryptData = aes.encryptBase64(content);
        System.out.println(encryptData);
        // nuP9GXvHgzW6Q12notB8jQ==

        // 解密
        String decryptData = aes.decryptStr(encryptData);
        System.out.println(decryptData);
        // 明文
    }
}

這里有個(gè)問題,如果秘鑰長(zhǎng)度不夠16位,會(huì)報(bào)錯(cuò)

Exception in thread "main" cn.hutool.crypto.CryptoException: 
InvalidKeyException: Invalid AES key length: 15 bytes

長(zhǎng)度只能是16位,24位,32位

interface AESConstants {
    int AES_BLOCK_SIZE = 16;
    int[] AES_KEYSIZES = new int[]{16, 24, 32};
}

參考
https://toscode.gitee.com/dromara/hutool/issues/I4O1EB

3、不對(duì)稱加密 asymmetric

以RSA為例文章來源地址http://www.zghlxwxcb.cn/news/detail-601136.html

package com.mouday;

import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.asymmetric.KeyType;
import cn.hutool.crypto.asymmetric.RSA;

public class Demo {
    public static void main(String[] args) {

        String content = "明文";

        // 當(dāng)使用無參構(gòu)造方法時(shí),Hutool將自動(dòng)生成隨機(jī)的公鑰私鑰密鑰對(duì):
        RSA rsa = SecureUtil.rsa();

        // 獲得私鑰
        rsa.getPrivateKey();
        rsa.getPrivateKeyBase64();
        // 獲得公鑰
        rsa.getPublicKey();
        rsa.getPublicKeyBase64();

        // 私鑰加密
        String encryptData = rsa.encryptBase64(content, KeyType.PrivateKey);
        System.out.println(encryptData);
        // BigHAtzA/JtjgnLR6MLJ32qvWCC5+B0c6Un+r34zeZ/dygWsWlu8zAEdfr7kfcuF3C1gvevUjV844xi2huzL6x0HqlefmGF/XirUuxPVqJYHzSpzRXGUXK0qaRC1n/fDK3uqEkzy1nfKsnhR2aHVJmVe7BZtjrKsAeClgUzCFJI=

        // 公鑰加密
        String decryptData = rsa.decryptStr(encryptData, KeyType.PublicKey);
        System.out.println(decryptData);
        // 明文
    }
}

到了這里,關(guān)于Java:Hutool工具箱之Hutool-crypto加密解密的文章就介紹完了。如果您還想了解更多內(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)文章

  • PDF 工具箱

    PDF 工具箱

    PDF 工具箱 V9.0.0.1 程序:VB.net? 運(yùn)行庫: NET Framework 4.5 下載:https://download.csdn.net/download/polloo2012/88399029 功能簡(jiǎn)介: 1、PDF文件多文件合并,可調(diào)整順序。 2、PDF文件拆分,將每頁拆分成獨(dú)立的PDF文件。 3、PDF文件添加水印,文字或圖片水印,圖片水印可選擇位置。 4、word/exce

    2024年02月09日
    瀏覽(22)
  • 密碼算法工具箱

    密碼算法工具箱

    這是一個(gè)密碼算法工具箱軟件,包含大多數(shù)密碼鍵盤的算法,您可以利用他做加解密、校驗(yàn)或者其他功能。 ①本工具包含對(duì)稱密鑰算法、MAC算法、PINBLOCK算法、Hash算法、非對(duì)稱密鑰算法的常用功能。 ②支持國際(RSA、DES、3DES)和國密(SM2、SM3、SM4)算法。 ③支持windows和l

    2024年01月19日
    瀏覽(24)
  • 29 旋轉(zhuǎn)工具箱

    29 旋轉(zhuǎn)工具箱

    實(shí)現(xiàn)了一個(gè)菜單按鈕的動(dòng)畫效果,當(dāng)鼠標(biāo)懸停在菜單按鈕上時(shí),菜單按鈕會(huì)旋轉(zhuǎn)315度,菜單按鈕旋轉(zhuǎn)的同時(shí),菜單按鈕旋轉(zhuǎn)的8個(gè)小圓圈也會(huì)依次旋轉(zhuǎn)360度,并且每個(gè)小圓圈的旋轉(zhuǎn)方向和菜單按鈕的旋轉(zhuǎn)方向相反,當(dāng)鼠標(biāo)懸停在某個(gè)小圓圈上時(shí),該小圓圈的旋轉(zhuǎn)方向會(huì)變?yōu)轫槙r(shí)

    2024年01月18日
    瀏覽(30)
  • Matlab 優(yōu)化工具箱

    Matlab 優(yōu)化工具箱

    語法:[x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,lb,ub,options) f、x、b、beq、lb 和 ub 是向量,A 和 Aeq 是矩陣。 示例1-1 : 語法:[x,fval,exitflag,output] = intlinprog(f,intcon,A,b,Aeq,beq,lb,ub,x0,options) f、x、intcon、b、beq、lb 和 ub 是向量,A 和 Aeq 是矩陣。 語法:x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub

    2024年02月02日
    瀏覽(54)
  • Python工具箱系列(三十)

    Python工具箱系列(三十)

    MySQL的口號(hào)是“世界上最流行的開源關(guān)系型數(shù)據(jù)庫”,而PostgreSQL的Slogan則是“世界上最先進(jìn)的開源關(guān)系型數(shù)據(jù)庫(PostgreSQL: The World\\\'s Most Advanced Open Source Relational Database)”,一看這就是一對(duì)老冤家了。這兩個(gè)口號(hào)很好的反映出了兩者的形象特質(zhì):PostgreSQL是功能豐富,高大上的嚴(yán)

    2024年02月03日
    瀏覽(28)
  • (轉(zhuǎn)載)matlab遺傳算法工具箱

    (轉(zhuǎn)載)matlab遺傳算法工具箱

    ????????以下內(nèi)容大部分來源于《MATLAB智能算法30個(gè)案例分析》,僅為學(xué)習(xí)交流所用。 ????????遺傳算法(genetic algorithm,GA)是一種進(jìn)化算法,其基本原理是仿效生物界中的“物競(jìng)天擇、適者生存”的演化法則。遺傳算法是把問題參數(shù)編碼為染色體,再利用迭代的方式進(jìn)行選

    2024年02月07日
    瀏覽(26)
  • Python工具箱系列(三十四)

    Python工具箱系列(三十四)

    SQLAlchemy是著名的ORM(Object Relational Mapping-對(duì)象關(guān)系映射)框架。其主要作用是在編程中,把面向?qū)ο蟮母拍罡鷶?shù)據(jù)庫中表的概念對(duì)應(yīng)起來。對(duì)許多語言(例如JAVA/PYTHON)來說就是定義一個(gè)對(duì)象,并且這個(gè)對(duì)象對(duì)應(yīng)著一張數(shù)據(jù)庫的表。而這個(gè)對(duì)象的實(shí)例,就對(duì)應(yīng)著表中的一條記錄。

    2024年02月06日
    瀏覽(81)
  • Python工具箱系列(三十三)

    Python工具箱系列(三十三)

    Timescaledb 在物聯(lián)網(wǎng)時(shí)代,出現(xiàn)了大量以時(shí)間為中心海量產(chǎn)生的傳感器數(shù)據(jù),稱為時(shí)序數(shù)據(jù)。這類數(shù)據(jù)的特點(diǎn)是: 數(shù)據(jù)記錄總有一個(gè)時(shí)間戳。 數(shù)據(jù)幾乎總是追加,不更新也不刪除。 大量使用近期的數(shù)據(jù)。很少更新或者回填時(shí)間間隔的缺失數(shù)據(jù)。 與時(shí)間間隔頻率關(guān)系不大。但累

    2024年02月06日
    瀏覽(20)
  • Python工具箱系列(三十一)

    Python工具箱系列(三十一)

    Neo4j是一個(gè)高性能的開源的,使用Java語言實(shí)現(xiàn)的NoSQL圖數(shù)據(jù)庫,它將結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)在網(wǎng)絡(luò)上而不是表中。它是一個(gè)嵌入式的、基于磁盤的、具備完全的事務(wù)特性的Java持久化引擎,但是它將結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)在網(wǎng)絡(luò)(從數(shù)學(xué)角度叫做圖)上而不是表中。Neo4j也可以被看作是一個(gè)

    2024年02月03日
    瀏覽(19)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包