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

Java實(shí)現(xiàn)AES加密工具類 - 簡單易用的數(shù)據(jù)加密解決方案

這篇具有很好參考價(jià)值的文章主要介紹了Java實(shí)現(xiàn)AES加密工具類 - 簡單易用的數(shù)據(jù)加密解決方案。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

當(dāng)我們涉及到敏感數(shù)據(jù)的存儲(chǔ)和傳輸時(shí),數(shù)據(jù)加密是非常重要的。加密可以確保數(shù)據(jù)的保密性和完整性,并幫助我們防止數(shù)據(jù)泄露和攻擊。在Java中,使用標(biāo)準(zhǔn)的加密算法和庫可以很容易地實(shí)現(xiàn)數(shù)據(jù)加密和解密。本篇文章將介紹一個(gè)簡單的Java工具類,該工具類使用AES對(duì)稱加密算法來對(duì)數(shù)據(jù)進(jìn)行加密和解密。

Java已經(jīng)提供了許多加密庫和算法,包括常用的對(duì)稱加密算法和非對(duì)稱加密算法,例如AES、DES、RSA等。

以下是一個(gè)簡單的Java加解密工具類的示例,可以使用AES算法進(jìn)行加密和解密:

  1. ENCRYPTION_ALGORITHMSECRET_KEY_ALGORITHM常量分別表示使用的加密算法和密鑰算法。在此例中,使用AES算法進(jìn)行加密和解密,并使用AES算法作為密鑰算法。

  1. HASH_ALGORITHM常量表示使用的哈希算法。在此例中,使用SHA-256哈希算法將密鑰生成為16字節(jié)的密鑰。

  1. encrypt方法使用給定的密鑰對(duì)字符串進(jìn)行加密。首先,使用密鑰生成SecretKeySpec對(duì)象,然后使用Cipher對(duì)象和ENCRYPTION_ALGORITHM常量進(jìn)行初始化。然后,將數(shù)據(jù)字節(jié)數(shù)組進(jìn)行加密,并使用Base64編碼返回密文字符串。

  1. decrypt方法使用給定的密鑰對(duì)字符串進(jìn)行解密。首先,使用密鑰生成SecretKeySpec對(duì)象,然后使用Cipher對(duì)象和ENCRYPTION_ALGORITHM常量進(jìn)行初始化。然后,使用Base64解碼密文字符串,并將解碼后的字節(jié)數(shù)組進(jìn)行解密。最后,返回解密后的明文字符串。

  1. generateSecretKeySpec方法生成SecretKeySpec對(duì)象。它使用給定的密鑰字符串和HASH_ALGORITHM常量生成哈希值。然后,它將哈希值截取前16個(gè)字節(jié),用于生成SecretKeySpec對(duì)象。

注意,這只是一個(gè)簡單的示例,真正的加密應(yīng)該考慮更多的安全因素。此外,為了確保密鑰安全,密鑰應(yīng)該存儲(chǔ)在安全的地方,并且只有授權(quán)的人員才能訪問它。

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.util.Base64;

public class EncryptionUtils {
    private static final String ENCRYPTION_ALGORITHM = "AES";
    private static final String SECRET_KEY_ALGORITHM = "AES";
    private static final String HASH_ALGORITHM = "SHA-256";

    public static String encrypt(String data, String key) throws Exception {
        SecretKeySpec secretKeySpec = generateSecretKeySpec(key);
        Cipher cipher = Cipher.getInstance(ENCRYPTION_ALGORITHM);
        cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
        byte[] encryptedBytes = cipher.doFinal(data.getBytes(StandardCharsets.UTF_8));
        return Base64.getEncoder().encodeToString(encryptedBytes);
    }

    public static String decrypt(String data, String key) throws Exception {
        SecretKeySpec secretKeySpec = generateSecretKeySpec(key);
        Cipher cipher = Cipher.getInstance(ENCRYPTION_ALGORITHM);
        cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
        byte[] decodedBytes = Base64.getDecoder().decode(data);
        byte[] decryptedBytes = cipher.doFinal(decodedBytes);
        return new String(decryptedBytes, StandardCharsets.UTF_8);
    }

    private static SecretKeySpec generateSecretKeySpec(String key) throws Exception {
        MessageDigest sha = MessageDigest.getInstance(HASH_ALGORITHM);
        byte[] keyBytes = key.getBytes(StandardCharsets.UTF_8);
        byte[] hashedBytes = sha.digest(keyBytes);
        byte[] truncatedBytes = new byte[16];
        System.arraycopy(hashedBytes, 0, truncatedBytes, 0, truncatedBytes.length);
        return new SecretKeySpec(truncatedBytes, SECRET_KEY_ALGORITHM);
    }
}

在上述示例中,我們使用AES算法和SHA-256哈希算法。加密和解密函數(shù)均接受一個(gè)字符串?dāng)?shù)據(jù)和一個(gè)字符串密鑰,并返回相應(yīng)的加密/解密字符串。

注意,這只是一個(gè)簡單的示例,真正的加密應(yīng)該考慮更多的安全因素。此外,為了確保密鑰安全,密鑰應(yīng)該存儲(chǔ)在安全的地方,并且只有授權(quán)的人員才能訪問它。

下面是一個(gè)簡單的示例,演示如何使用上面提供的EncryptionUtils工具類對(duì)字符串進(jìn)行加密和解密:

public class Example {
    public static void main(String[] args) {
        String data = "Hello World!";
        String key = "mysecretkey";

        try {
            // 加密數(shù)據(jù)
            String encryptedData = EncryptionUtils.encrypt(data, key);
            System.out.println("加密后的數(shù)據(jù): " + encryptedData);

            // 解密數(shù)據(jù)
            String decryptedData = EncryptionUtils.decrypt(encryptedData, key);
            System.out.println("解密后的數(shù)據(jù): " + decryptedData);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在上面的示例中,我們使用EncryptionUtils工具類將字符串“Hello World!”加密,使用密鑰“mysecretkey”進(jìn)行加密。然后我們解密密文,使用相同的密鑰來解密。輸出結(jié)果應(yīng)該為:

加密后的數(shù)據(jù): eUFzznJhGxtFE4G4bJOx1A==
解密后的數(shù)據(jù): Hello World!

注意,如果密鑰不正確,解密過程將會(huì)失敗,因此在實(shí)際使用中需要確保密鑰的正確性。

下面給大家打個(gè)廣告哈哈哈:給大家介紹一個(gè)公眾號(hào),親測方便好用。主要功能是搜索最優(yōu)優(yōu)惠券,購物返利,但是不僅僅包括京東、淘寶、拼多多等電商購物會(huì)返利,包括滴滴打車、美團(tuán)外賣以及美團(tuán)優(yōu)惠券等等都會(huì)有返利,并且返利是我見過最高的。反正用到就是賺到,絕對(duì)虧不了,能省一點(diǎn)是一點(diǎn)。而且現(xiàn)在還接入了最火熱的chatGPT,沒事的時(shí)候還可以和人工智能聊天,爽歪歪。我不允許你不知道這么牛的東西。哈哈哈,二維碼放到下面了,微信掃一掃試用一下。文章來源地址http://www.zghlxwxcb.cn/news/detail-501287.html

到了這里,關(guān)于Java實(shí)現(xiàn)AES加密工具類 - 簡單易用的數(shù)據(jù)加密解決方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(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)文章

  • Java:SpringBoot使用AES對(duì)JSON數(shù)據(jù)加密和解密

    客戶端和服務(wù)端都可以加密和解密,使用base64進(jìn)行網(wǎng)絡(luò)傳輸 加密方 解密方 2.1、項(xiàng)目結(jié)構(gòu) 2.2、常規(guī)業(yè)務(wù)代碼 pom.xml Application.java WebMvcConfig.java CrossConfig.java JsonRequest.java JsonResult.java JsonResultVO.java IndexController.java UserController.java 2.3、加密的實(shí)現(xiàn) application.yml SecretData.java DecryptRequ

    2024年02月11日
    瀏覽(22)
  • 在線AES加密/解密工具

    在線AES加密/解密工具

    在線AES加密/解密工具 http://lzltool.com/AES http://lzltool.com/AES

    2024年02月12日
    瀏覽(33)
  • 簡單易用,靈活強(qiáng)大:用SQLAlchemy實(shí)現(xiàn)Python操作數(shù)據(jù)庫

    什么是SQLAlchemy? SQLAlchemy是一個(gè)Python的SQL工具和ORM框架,可以通過Python代碼直接操作關(guān)系型數(shù)據(jù)庫,也可以使用ORM模型進(jìn)行對(duì)象關(guān)系映射。它支持多種數(shù)據(jù)庫,并提供了強(qiáng)大的SQL表達(dá)式和查詢API。 SQLAlchemy可以分為兩個(gè)部分:Core和ORM。 Core:提供了底層的SQL表達(dá)式和查詢API,

    2024年02月04日
    瀏覽(24)
  • 用java語言寫一個(gè)AES算法,使用AES(CBC模式)對(duì)數(shù)據(jù)進(jìn)行加密或解密。加解密用到的密鑰(Key)和密鑰偏移量(IV),代碼實(shí)例類編寫。

    以下是一個(gè)使用Java編寫的AES算法實(shí)例,使用AES(CBC模式)對(duì)數(shù)據(jù)進(jìn)行加密和解密。代碼中包括了生成隨機(jī)密鑰和密鑰偏移量的方法。 java Copy code import javax.crypto.*; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.security.InvalidAlgorithmParameterException; import

    2024年02月07日
    瀏覽(33)
  • java:AES加密和解密

    java:AES加密和解密

    1 前言 對(duì)稱加密,即單秘鑰加密,指加密和解密的過程中,使用相同的秘鑰,相比于非對(duì)稱加密,因僅有一把鑰匙,故而速度更快,更適合解密大文件(常見于如視頻文件的加密解密中)。AES算法就屬于對(duì)稱加密中的一種。 2 使用 依賴引入: AES加密與解密的工具類封裝: 執(zhí)

    2024年02月11日
    瀏覽(22)
  • python實(shí)現(xiàn)AES加密

    目錄 1.AES加密 2.需要導(dǎo)入的模塊 3.定義好全局變量 4.編寫加密函數(shù) 5.將密文解密 6.完整代碼 ? AES的區(qū)塊長度固定為128 比特,密鑰長度則可以是128,192或256比特; AES有多種加密模式,其中CBC分組模式是SSL、IPSec的標(biāo)準(zhǔn)。使用CBC加密模式時(shí)需要提前給出一段初始化向量iv,因?yàn)槊?/p>

    2023年04月08日
    瀏覽(20)
  • 前端界面直接生成源碼?用這個(gè)工具直接生成VUE代碼,簡單易用

    前端界面直接生成源碼?用這個(gè)工具直接生成VUE代碼,簡單易用

    推薦一個(gè)前端代碼生成工具iVX。我個(gè)人使用這個(gè)工具也有一段時(shí)間了,感覺做的很不錯(cuò)。有需要生成前端代碼的同學(xué)可以關(guān)注了解一下,在下面的這個(gè)例子中,我生成了兩個(gè)編輯框和兩個(gè)按鈕。 上手一個(gè)工具的最便捷路徑就是看它的官方文檔和教程。同樣,iVX官網(wǎng)也提供了這

    2024年02月05日
    瀏覽(21)
  • python實(shí)現(xiàn)AES-128#實(shí)現(xiàn)加密字符串和加密文件

    python實(shí)現(xiàn)AES-128#實(shí)現(xiàn)加密字符串和加密文件

    這篇文章是對(duì)之前的一篇文章的重寫和優(yōu)化AES加密算法基于python實(shí)現(xiàn) 腳本語言:Python 已實(shí)現(xiàn)的功能 明文和密密鑰可以是任意字符:中文,字符,數(shù)字或符號(hào)。 ? 明文長度任意,密鑰的字節(jié)數(shù)不能超過16字節(jié)。默認(rèn)編碼為utf-8所以,密鑰最多支持5個(gè)中文字符 待加密的數(shù)據(jù):可

    2024年02月12日
    瀏覽(28)
  • RSA+AES實(shí)現(xiàn)混合加密

    RSA+AES實(shí)現(xiàn)混合加密

    為什么使用RSA + AES混合加密 1.加密介紹 RSA加密: 屬于非對(duì)稱加密,公鑰用于對(duì)數(shù)據(jù)進(jìn)行加密,私鑰對(duì)數(shù)據(jù)進(jìn)行解密,兩者不可逆。公鑰和私鑰是同時(shí)生成的,且一一對(duì)應(yīng)。比如:客戶端擁有公鑰,服務(wù)端擁有公鑰和私鑰??蛻舳藢?shù)據(jù)通過公鑰進(jìn)行加密后,發(fā)送密文給服務(wù)端

    2024年02月05日
    瀏覽(61)
  • python 如何實(shí)現(xiàn) aes 加密?

    在Python中,使用pycryptodome庫可以輕松地實(shí)現(xiàn)AES加密。本文將介紹如何使用Python實(shí)現(xiàn)AES加密以及如何使用pycryptodome庫來進(jìn)行加密。 AES(Advanced Encryption Standard)是一種對(duì)稱密鑰加密算法,被廣泛用于保護(hù)數(shù)據(jù)的安全。它是目前最常用的加密算法之一,被廣泛應(yīng)用于數(shù)據(jù)通信、數(shù)

    2024年02月07日
    瀏覽(44)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包