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

用java語言寫一個AES算法,使用AES(CBC模式)對數(shù)據(jù)進(jìn)行加密或解密。加解密用到的密鑰(Key)和密鑰偏移量(IV),代碼實例類編寫。

這篇具有很好參考價值的文章主要介紹了用java語言寫一個AES算法,使用AES(CBC模式)對數(shù)據(jù)進(jìn)行加密或解密。加解密用到的密鑰(Key)和密鑰偏移量(IV),代碼實例類編寫。。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

以下是一個使用Java編寫的AES算法實例,使用AES(CBC模式)對數(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 java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.Base64;

public class AESExample {

? ? private static final String AES_ALGORITHM = "AES";
? ? private static final String AES_TRANSFORMATION = "AES/CBC/PKCS5Padding";
? ? private static final int AES_KEY_SIZE = 256;

? ? public static void main(String[] args) {
? ? ? ? try {
? ? ? ? ? ? // 生成隨機(jī)密鑰
? ? ? ? ? ? SecretKey secretKey = generateRandomKey();

? ? ? ? ? ? // 生成隨機(jī)密鑰偏移量
? ? ? ? ? ? byte[] iv = generateRandomIV();

? ? ? ? ? ? String plaintext = "Hello, World!";

? ? ? ? ? ? // 加密
? ? ? ? ? ? String ciphertext = encrypt(plaintext, secretKey, iv);
? ? ? ? ? ? System.out.println("加密后的文本:" + ciphertext);

? ? ? ? ? ? // 解密
? ? ? ? ? ? String decryptedText = decrypt(ciphertext, secretKey, iv);
? ? ? ? ? ? System.out.println("解密后的文本:" + decryptedText);
? ? ? ? } catch (NoSuchAlgorithmException | NoSuchPaddingException
? ? ? ? ? ? ? ? | InvalidKeyException | InvalidAlgorithmParameterException
? ? ? ? ? ? ? ? | IllegalBlockSizeException | BadPaddingException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? }

? ? // 生成隨機(jī)密鑰
? ? public static SecretKey generateRandomKey() throws NoSuchAlgorithmException {
? ? ? ? KeyGenerator keyGenerator = KeyGenerator.getInstance(AES_ALGORITHM);
? ? ? ? keyGenerator.init(AES_KEY_SIZE);
? ? ? ? return keyGenerator.generateKey();
? ? }

? ? // 生成隨機(jī)密鑰偏移量
? ? public static byte[] generateRandomIV() {
? ? ? ? SecureRandom secureRandom = new SecureRandom();
? ? ? ? byte[] iv = new byte[16];
? ? ? ? secureRandom.nextBytes(iv);
? ? ? ? return iv;
? ? }

? ? // AES加密
? ? public static String encrypt(String plaintext, SecretKey secretKey, byte[] iv)
? ? ? ? ? ? throws NoSuchPaddingException, NoSuchAlgorithmException,
? ? ? ? ? ? InvalidAlgorithmParameterException, InvalidKeyException,
? ? ? ? ? ? BadPaddingException, IllegalBlockSizeException {
? ? ? ? Cipher cipher = Cipher.getInstance(AES_TRANSFORMATION);
? ? ? ? IvParameterSpec ivParameterSpec = new IvParameterSpec(iv);
? ? ? ? cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivParameterSpec);
? ? ? ? byte[] encryptedBytes = cipher.doFinal(plaintext.getBytes());
? ? ? ? return Base64.getEncoder().encodeToString(encryptedBytes);
? ? }

? ? // AES解密
? ? public static String decrypt(String ciphertext, SecretKey secretKey, byte[] iv)
? ? ? ? ? ? throws NoSuchPaddingException, NoSuchAlgorithmException,
? ? ? ? ? ? InvalidAlgorithmParameterException, InvalidKeyException,
? ? ? ? ? ? BadPaddingException, IllegalBlockSizeException {
? ? ? ? Cipher cipher = Cipher.getInstance(AES_TRANSFORMATION);
? ? ? ? IvParameterSpec ivParameterSpec = new IvParameterSpec(iv);
? ? ? ? cipher.init(Cipher.DECRYPT_MODE, secretKey, ivParameterSpec);
? ? ? ? byte[] encryptedBytes = Base64.getDecoder().decode(ciphertext);
? ? ? ? byte[] decryptedBytes = cipher.doFinal(encryptedBytes);
? ? ? ? return new String(decryptedBytes);
? ? }
}
上述代碼中,generateRandomKey方法用于生成隨機(jī)密鑰,generateRandomIV方法用于生成隨機(jī)密鑰偏移量。encrypt方法使用提供的密鑰和密鑰偏移量對給定的明文進(jìn)行加密,返回Base64編碼后的密文。decrypt方法使用相同的密鑰和密鑰偏移量對密文進(jìn)行解密,并返回解密后的明文。

請注意,上述代碼僅供示例目的,實際使用時需要妥善管理密鑰和密鑰偏移量以確保安全性。文章來源地址http://www.zghlxwxcb.cn/news/detail-723862.html

到了這里,關(guān)于用java語言寫一個AES算法,使用AES(CBC模式)對數(shù)據(jù)進(jìn)行加密或解密。加解密用到的密鑰(Key)和密鑰偏移量(IV),代碼實例類編寫。的文章就介紹完了。如果您還想了解更多內(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ìn)行投訴反饋,一經(jīng)查實,立即刪除!

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

相關(guān)文章

  • iOS MT19937隨機(jī)數(shù)生成,結(jié)合AES-CBC加密算法實現(xiàn)。

    按處理順序說明: 1. 生成隨機(jī)數(shù)序列字符串函數(shù) 生成方法MT19937,初始種子seed,利用C++庫方法,生成: 2. 對第一部中的隨機(jī)數(shù)序列字符串進(jìn)行sha256加密,得到64字節(jié)的一個數(shù)據(jù)流函數(shù)。 ?3. AES-CBC加密解密方法 /* ? ? CCCrypt方法提供了CBC 和 ECB 兩種AES加密模式, ? ? 如果不傳

    2024年04月09日
    瀏覽(28)
  • 前端CryptoJS-AES加解密 對應(yīng)php的AES-128-CBC加解密踩坑(java也相同加解密)

    ?前端部分注意看填充是pkcs7 有個前提,要看前端有沒有轉(zhuǎn)成hex格式,如果沒轉(zhuǎn),php那邊就不需要調(diào)用特定函數(shù)轉(zhuǎn)hex格式的 后端php代碼

    2024年02月15日
    瀏覽(23)
  • Java實現(xiàn)數(shù)據(jù)加密:掌握DES CBC和ECB兩種模式

    DES算法是一種對稱加密算法,它使用相同的密鑰進(jìn)行加密和解密。DES算法是一種分組密碼,即將明文分成固定長度的塊,并對每個塊進(jìn)行加密。DES算法將每個64位的明文塊分成兩個32位的半塊,然后進(jìn)行一系列的加密和解密操作,最終得到一個64位的密文塊。 CBC(Cipher Block C

    2023年04月19日
    瀏覽(24)
  • 國密算法SM2/3/4簡單比較,以及基于Java的SM4(ECB模式,CBC模式)對稱加解密實現(xiàn)

    常用的國密算法包含SM2,SM3,SM4。以下針對每個算法使用場景進(jìn)行說明以比較其差異 SM2:非對稱加密算法,可以替代RSA 數(shù)字簽名,SM2為非對稱加密,加解密使用一對私鑰和公鑰,只有簽名發(fā)行者擁有私鑰,可用于加密,其他需要驗證解密或驗簽者使用公鑰進(jìn)行。如果使用公

    2024年04月13日
    瀏覽(24)
  • ssh命令報錯no matching cipher found. Their offer: aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc

    執(zhí)行 ssh user@host 報錯,信息如下: 協(xié)議不匹配 可以使用如下命令 ssh -c aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc user@host 也可以修改 ~/.ssh/config文件 vi ~/.ssh/config 增加配置 Ciphers +aes128-cbc,aes192-cbc,aes256-cbc

    2024年02月13日
    瀏覽(21)
  • 爬蟲案例-使用Session登錄指定網(wǎng)站(JS逆向AES-CBC加密+MD5加密)

    爬蟲案例-使用Session登錄指定網(wǎng)站(JS逆向AES-CBC加密+MD5加密)

    總體概覽:使用Session登錄該網(wǎng)站,其中包括對password參數(shù)進(jìn)行js逆向破解 ????????????????(涉及加密:md5加密+AES-CBC加密) 難度:兩顆星 目標(biāo)網(wǎng)址:aHR0cHM6Ly93d3cuZnhiYW9nYW8uY29tLw== 下面文章將分為四個部分: ????????1、定位主體加密函數(shù),進(jìn)行斷點 ????????2、分

    2024年02月09日
    瀏覽(21)
  • java | 使用Cipher類實現(xiàn)AES所有常用加密模式

    java | 使用Cipher類實現(xiàn)AES所有常用加密模式

    AES 密碼學(xué)中的高級加密標(biāo)準(zhǔn)(Advanced Encryption Standard,AES),又稱Rijndael加密法,是美國聯(lián)邦政府采用的一種區(qū)塊加密標(biāo)準(zhǔn)。這個標(biāo)準(zhǔn)用來替代原先的DES(Data Encryption Standard),已經(jīng)被多方分析且廣為全世界所使用。 AES 是對稱加密算法,優(yōu)點:加密速度快;缺點:如果秘鑰丟

    2024年02月13日
    瀏覽(17)
  • 怎么防止數(shù)據(jù)重放攻擊——CBC模式【密碼學(xué)】(7)

    怎么防止數(shù)據(jù)重放攻擊——CBC模式【密碼學(xué)】(7)

    目錄 一、什么是CBC模式? 二、初始化向量 三、異或運算? 四、密鑰少一位會有影響嗎? CBC模式中,明文分組在加密前,要與前一組的密文分組進(jìn)行異或運算,異或運算的結(jié)果參與加密函數(shù)的運算。 每一個密文分組,都依賴于前面所有的明文分組,包括初始化向量。 ? ? 加密

    2024年02月09日
    瀏覽(22)
  • 安全:AES算法及其加密模式

    AES(高級加密標(biāo)準(zhǔn))是一種對稱密鑰加密算法,被廣泛用于保護(hù)數(shù)據(jù)的機(jī)密性。 AES算法: 結(jié)構(gòu): AES算法使用替代(SubBytes)、置換(ShiftRows)、混淆(MixColumns)和輪密鑰加(AddRoundKey)等四種基本操作來處理數(shù)據(jù)塊。 密鑰長度: AES支持128位、192位和256位三種密鑰長度,分別

    2024年01月23日
    瀏覽(22)
  • 【密碼學(xué)】為什么不推薦在對稱加密中使用CBC工作模式

    這篇文章是我在公司內(nèi)部分享中一部分內(nèi)容的詳細(xì)版本,如標(biāo)題所言,我會通過文字、代碼示例、帶你完整的搞懂為什么我們不建議你使用cbc加密模式,用了會導(dǎo)致什么安全問題,即使一定要用需要注意哪些方面的內(nèi)容。 注:本文僅從安全角度出發(fā),未考慮性能與兼容性等因

    2024年02月06日
    瀏覽(95)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包