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

Hutool-crypto 加密、解密詳解!

這篇具有很好參考價值的文章主要介紹了Hutool-crypto 加密、解密詳解!。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1. 介紹

在Java開發(fā)的過程中,很多場景下都需要加密解密。

比如對敏感數(shù)據(jù)的加密,對配置文件信息的加密,通信數(shù)據(jù)的加密等等。

今天介紹的是Hutool工具包中的加密模塊?crypto。

2. 加密分類

加密分為三類:

  • 對稱加密(symmetric)

    常用的有AES、DES

  • 非對稱加密(asymmetric)

    常用的有RSA,DSA

  • 摘要加密(digest)

    常用的有MD5,SHA-1

3. crypto模塊整體介紹

Hutool-crypto 加密、解密詳解!

  • 秘鑰工具
  • 加密解密工具
  • BCUtil
  • 國密算法SmUtil

Hutool-crypto 加密、解密詳解!

4. 摘要加密(Digest)

4.1 間接

摘要算法是一種能產(chǎn)生特殊輸出格式的算法,這種算法的特點是:無論用戶輸入設(shè)么長度的原始數(shù)據(jù),講過計算后輸出的密文都是固定長度的,這種算法的原理是根據(jù)一定的運算規(guī)則進行某種形式的提取,這種提取就是摘要,比摘要的數(shù)據(jù)與元數(shù)據(jù)有密切聯(lián)系。只要源數(shù)據(jù)稍有改變,輸出的“摘要”便完全不同,因此,基于這種原理的額算法便能夠?qū)?shù)據(jù)完整性提供健全的保證。

但是,由于輸出的密文是提取元數(shù)據(jù)經(jīng)過處理的定長值,所以他已經(jīng)不能還原為原數(shù)據(jù),即消息摘要算法是不可逆的。理論上無法通過反向運算取得元數(shù)據(jù)內(nèi)容。因此他通常值能被用來做數(shù)據(jù)的完整性驗證。

4.2 使用

這主要介紹md5加密。

基本使用

/**
 *  md5的基本使用
 *  生成32位的密文
 */
@Test
public void MD5BasicTest() {
    System.out.println(new String(DigestUtil.md5("testaaa")));
    // 返回16進制形式  de2ec3065687316991579e6b9e6ce143
    System.out.println(DigestUtil.md5Hex("testaa"));
}

加鹽、加鹽位置、摘要次數(shù)

/**
 *  md5的高級使用
 *      加鹽  加鹽的位置  摘要次數(shù)
 */
@Test
public void MD5Test() {
    // 加鹽  加鹽的位置  摘要次數(shù)
    String salt = "md5Salt";
    int index = 0;
    int count = 2;
    MD5 md5 = new MD5(salt.getBytes(StandardCharsets.UTF_8), index, count);
    // 返回16進制格式
    System.out.println(md5.digestHex("testaa"));;
}

5. 對稱加密(Symmetric)

5.1 介紹

對稱加密(也就私鑰加密),指加密和解密使用相同秘鑰的加密算法。有時又叫傳統(tǒng)密碼算法,就是加密米喲啊能夠從解密秘鑰中推算出來,同時秘鑰也可以從加密秘鑰中推算出來。而在大多數(shù)的對稱算法中,加密秘鑰和解密秘鑰是相同的,所以也成這種算法為私密秘鑰算法或者單秘鑰算法。

她要求發(fā)送方和接收方在安全通信之前,商定一個秘鑰。

對稱算法的安全性依賴于秘鑰,泄露秘鑰就意味著任何人都可以對他們發(fā)送和接收的消息進行解密,所以秘鑰的保密性對通信的安全性至關(guān)重要。

5.2 使用

這兒介紹AES

基本使用

/**
 * 簡單使用,直接使用秘鑰加密解密
 */
@Test
public void AESBasicTest() {
    // 生成秘鑰,也可以手動指定
    byte[] key = SecureUtil.generateKey(SymmetricAlgorithm.AES.getValue()).getEncoded();

    // 構(gòu)建
    SymmetricCrypto symmetricCrypto = new SymmetricCrypto(SymmetricAlgorithm.AES, key);
    // 加密
    System.out.println(new String(symmetricCrypto.encrypt("testaa")));
    // 生成16進制格式的
    System.out.println(symmetricCrypto.encryptHex("testaa"));

    // 解密
    System.out.println(new String(symmetricCrypto.decrypt(symmetricCrypto.encrypt("testaa"))));
    // 直接解密字符串
    System.out.println(symmetricCrypto.decryptStr(symmetricCrypto.encryptHex("testaa")));
}

高級使用

/**
 * AES 高級使用
 *      mode – 模式Mode
 *      padding – Padding補碼方式
 *      key – 密鑰,支持三種密鑰長度:128、192、256位
 *      iv – 偏移向量,加鹽   必須16位
 *
 *  缺點,受到iv的影響,加密的字符串要么為空,要么為16位以上
 */
@Test
public void AESTest() {
    // 生成秘鑰,也可以手動指定
    byte[] key = SecureUtil.generateKey(SymmetricAlgorithm.AES.getValue()).getEncoded();
    String iv = "testiv0000000000";

    AES aes = new AES(Mode.CTS, Padding.PKCS5Padding, key, iv.getBytes(StandardCharsets.UTF_8));

    // 加密
    System.out.println(aes.encryptHex("testaa1234567899"));
    // 解密
    System.out.println(aes.decryptStr(aes.encrypt("testaa1234567899")));
}

6. 非對稱加密(Asymmetric)

6.1 介紹

對于非對稱加密,最常用的就是RSA和DSA。

非堆成加密有公鑰和私鑰兩個概念,私鑰自己擁有,公鑰公開。根據(jù)應(yīng)用的不同,我們可以選擇使用不同的秘鑰進行加密。

  1. 簽名:使用私鑰加密,公鑰解密。用于讓所有公鑰的所有者驗證私鑰所有者的身份并且用來防止私鑰所有者發(fā)布的內(nèi)容被篡改,但是不是用來保證內(nèi)容不被他人獲得的;
  2. 加密:用公鑰加密,私鑰解密。用于向公鑰所有者發(fā)布星系,這個信息可能被他們篡改,但是無法被他人獲取。

6.2 使用

這兒介紹RSA

基本使用

/**
 * 基本使用
 */
@Test
public void RSABasicTest() {
    RSA rsa = new RSA();
    // 獲取公鑰和私鑰
    System.out.println(rsa.getPublicKey());
    System.out.println(rsa.getPrivateKeyBase64());
    System.out.println(rsa.getPrivateKey());
    System.out.println(rsa.getPrivateKeyBase64());
    // 私鑰加密,公鑰解密
    System.out.println(new String(rsa.encrypt("testaa", KeyType.PrivateKey)));
    System.out.println(new String(rsa.decrypt(rsa.encrypt("testaa", KeyType.PrivateKey), KeyType.PublicKey)));
    // 公鑰加密,私鑰解密
    System.out.println(new String(rsa.encrypt("testaa", KeyType.PublicKey)));
    System.out.println(new String(rsa.decrypt(rsa.encrypt("testaa", KeyType.PublicKey), KeyType.PrivateKey)));
}

?高級使用

/**
 * 高級使用
 *  自定義生成 公鑰和私鑰
 */
@Test
public void RSATest() {
    KeyPair keyPair = SecureUtil.generateKeyPair(AsymmetricAlgorithm.RSA.getValue());
    PrivateKey privateKey = keyPair.getPrivate();
    PublicKey publicKey = keyPair.getPublic();
    System.out.println(publicKey);
    System.out.println(privateKey);
    System.out.println("----------");

    RSA rsa = new RSA(privateKey, publicKey);
    // 私鑰加密,公鑰解密
    System.out.println(new String(rsa.encrypt("testaa", KeyType.PrivateKey)));
    System.out.println(new String(rsa.decrypt(rsa.encrypt("testaa", KeyType.PrivateKey), KeyType.PublicKey)));
    // 公鑰加密,私鑰解密
    System.out.println(new String(rsa.encrypt("testaa", KeyType.PublicKey)));
    System.out.println(new String(rsa.decrypt(rsa.encrypt("testaa", KeyType.PublicKey), KeyType.PrivateKey)));

}

7. 國密算法(SM)

Hutool針對Bouncy Castle做了簡化包裝,用于實現(xiàn)國密算法中的SM2、SM3、SM4。。

國密算法工具封裝包括:

  • 非對稱加密和簽名:SM2
  • 摘要簽名算法:SM3
  • 對稱加密:SM4

國密算法需要引入?Bouncy Castle?庫的依賴。

這不做介紹了。文章來源地址http://www.zghlxwxcb.cn/news/detail-457799.html

到了這里,關(guān)于Hutool-crypto 加密、解密詳解!的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • python使用Crypto庫實現(xiàn)加密解密

    pycrypto,pycryptodome是crypto第三方庫,pycrypto已經(jīng)停止更新三年了,所以不建議安裝這個庫;pycryptodome是pycrypto的延伸版本,用法和pycrypto 是一模一樣的;所以只需要安裝pycryptodome就可以了 1:crypto的加密解密組件des.py 2:crypto組件使用

    2024年02月13日
    瀏覽(16)
  • 微信小程序使用crypto.js加密解密

    微信小程序使用crypto.js加密解密

    crypto.js是用來進行AES加密的 注意AES在使用時有7個配置項,前后端加解密記著統(tǒng)一參數(shù),測試時注意配置項的選擇是否一致。 AES加密測試工具 文件存放路徑: cryptoPro.js代碼:

    2024年02月11日
    瀏覽(25)
  • Java RSA加解密-非對稱加密-公鑰私鑰加解密(使用hutool工具)

    Java RSA加解密-非對稱加密-公鑰私鑰加解密(使用hutool工具)

    之前一篇帖子(https://blog.csdn.net/u014137486/article/details/136413532)展示了使用原生Java進行RSA加解密,本文介紹下使用當(dāng)下流行的Hutool工具進行RSA加解密的用法。 目錄 一、在Linux環(huán)境下生成公鑰、私鑰文件 二、將生成的公私鑰文件導(dǎo)入項目中并移除pem文件的前后公私鑰標(biāo)記 三、po

    2024年04月23日
    瀏覽(376)
  • JS逆向加密解密工具Crypto Magician、樂易助手、WT-JS 下載使用

    JS逆向加密解密工具Crypto Magician、樂易助手、WT-JS 下載使用

    方便開發(fā)者更好的定位加密算法,提高了開發(fā)的效率,必備神器; 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 下載地址:https://pan.baidu.com/s/13IxwJyIbKokpXdB4d42IOQ?pwd=chhj 消息摘要算法 對稱加密算法 非對稱加密算法 下載地址:https://pan.baidu.com/s/17ir4KJaXte1e88l7VfMs5A?pwd=mn1

    2024年02月11日
    瀏覽(26)
  • 【RSA加密/解密】PKCS1_OAEP和PKCS1_v1_5兩種填充方案【python RSA密鑰對生成、密碼加密、密文解密、pycharm安裝Crypto】

    一、PKCS1_OAEP和PKCS1_v1_5是公鑰加密標(biāo)準(zhǔn)中的兩種填充方案。 PKCS1_OAEP(Optimal Asymmetric Encryption Padding)是一種更安全的填充方案,它提供了更好的安全性和抗攻擊性。它使用隨機數(shù)進行填充,并引入了哈希函數(shù)來增加安全性。 PKCS1_v1_5是較舊的填充方案,它使用固定的填充字節(jié)序

    2024年02月06日
    瀏覽(63)
  • 國密SM2 后端Hutool+前端sm-crypto

    在網(wǎng)上找了很多文章,都只是單獨說了用后端加解密及前端加解密,很少把兩個結(jié)合起來一起說的文章,本文分享兩者結(jié)合起來的用法和踩坑。 前端項目引入第三方包 后端項目引入工具類 使用工具類生成兩套公私鑰: 服務(wù)端公私鑰、客戶端公私鑰 前端拿服務(wù)端公鑰+客戶端私

    2024年04月24日
    瀏覽(18)
  • 使用MySQL的加密和解密方法詳解

    在數(shù)據(jù)庫應(yīng)用程序中,數(shù)據(jù)的安全性是至關(guān)重要的。為了保護敏感數(shù)據(jù)免受未經(jīng)授權(quán)的訪問,我們可以使用加密和解密技術(shù)。MySQL提供了幾種方法來實現(xiàn)數(shù)據(jù)加密和解密,本文將重點介紹這些方法并提供相應(yīng)的源代碼示例。 一、使用AES_ENCRYPT和AES_DECRYPT函數(shù)進行加密和解密 M

    2024年02月02日
    瀏覽(25)
  • 加密解密軟件VMProtect入門使用教程(一):軟件及專業(yè)術(shù)語介紹

    VMProtect 是新一代軟件保護實用程序。VMProtect支持德爾菲、Borland C Builder、Visual C/C++、Visual Basic(本機)、Virtual Pascal和XCode編譯器。 同時,VMProtect有一個內(nèi)置的反匯編程序,可以與Windows和Mac OS X可執(zhí)行文件一起使用,并且還可以鏈接編譯器創(chuàng)建的MAP文件,以快速選擇要保護的

    2024年02月04日
    瀏覽(24)
  • Hadoop中的加密解密機制——偽隨機數(shù)生成算法介紹

    作者:禪與計算機程序設(shè)計藝術(shù) Hadoop作為當(dāng)下最流行的大數(shù)據(jù)處理平臺,提供了豐富的功能支持,如海量數(shù)據(jù)的存儲、分析與計算。其中一個重要的環(huán)節(jié)就是數(shù)據(jù)安全問題。無論是存儲集群還是計算集群,都需要提供數(shù)據(jù)保護措施來確保數(shù)據(jù)的完整性和可用性。今天我將介紹

    2024年02月06日
    瀏覽(25)
  • Java的Base64加密解密詳解

    大家好,我是免費搭建查券返利機器人賺傭金就用微賺淘客系統(tǒng)3.0的小編,也是冬天不穿秋褲,天冷也要風(fēng)度的程序猿! 在當(dāng)今數(shù)字化時代,數(shù)據(jù)的安全性和可傳遞性變得尤為重要。Java編程語言提供了 Base64 編碼和解碼的工具,成為保障數(shù)據(jù)傳輸和存儲安全性的一項重要技術(shù)

    2024年04月15日
    瀏覽(34)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包