日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

对称加密整个过程

發布時間:2024/4/13 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 对称加密整个过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對稱加密

對稱密碼技術:發件人和收件人使用其共同擁有的單個密鑰 ,這種密鑰既用于加密,也用于解密,叫做機密密鑰(也稱為對稱密鑰或會話密鑰)。

????能夠提供信息機密性(沒有密鑰信息不能被解密)、完整性(被改變的信息不能被解密)的服務。

????對稱式密碼學又稱:單鑰密碼學、秘密密鑰密碼學、會話密鑰密碼學、私鑰密碼學、共享秘鑰密碼學

常見的對稱式加密技術

?DES(數據加密標準):分組式加密,算法源于Lucifer,作為NIST對稱式加密標準;64位(有效位56位、校驗8位),分組算法

??3DES:128位,分組算法

????IDEA(國際數據加密算法):128位,比DES快,分組算法

????Blowfish:32-448位,算法公開,分組算法

????RC4:流密碼,密鑰長度可變

????RC5:分組密碼,密鑰長度可變,最大2048位

????Rijndael:128位/196位/256位

????AES(高級加密標準):DES升級版,算法出自Rinjindael

package com.learn.des;import java.security.SecureRandom; import javax.crypto.spec.DESKeySpec; import javax.crypto.SecretKeyFactory; import javax.crypto.SecretKey; import javax.crypto.Cipher;/*** DES加密介紹 DES是一種對稱加密算法,所謂對稱加密算法即:加密和解密使用相同密鑰的算法。DES加密算法出自IBM的研究,* 后來被美國政府正式采用,之后開始廣泛流傳,但是近些年使用越來越少,因為DES使用56位密鑰,以現代計算能力,* 24小時內即可被破解。雖然如此,在某些簡單應用中,我們還是可以使用DES加密算法,本文簡單講解DES的JAVA實現 。* 注意:DES加密和解密過程中,密鑰長度都必須是8的倍數*/ public class DES {public DES() {}// 測試public static void main(String args[]) throws Exception {// 待加密內容String str = "leon666";// 密碼,長度要是8的倍數 密鑰隨意定String password = "95880288";byte[] encrypt = encrypt(str.getBytes(), password);System.out.println("加密后:" + new String(encrypt));// 解密byte[] decrypt = decrypt(encrypt, password);System.out.println("解密后:" + new String(decrypt));}/*** 加密* * @param datasource* byte[]* @param password* String* @return byte[]*/public static byte[] encrypt(byte[] datasource, String password) {try {SecureRandom random = new SecureRandom();DESKeySpec desKey = new DESKeySpec(password.getBytes());// 創建一個密匙工廠,然后用它把DESKeySpec轉換成SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");SecretKey securekey = keyFactory.generateSecret(desKey);// Cipher對象實際完成加密操作Cipher cipher = Cipher.getInstance("DES");// 用密匙初始化Cipher對象,ENCRYPT_MODE用于將 Cipher 初始化為加密模式的常量cipher.init(Cipher.ENCRYPT_MODE, securekey, random);// 現在,獲取數據并加密// 正式執行加密操作return cipher.doFinal(datasource); // 按單部分操作加密或解密數據,或者結束一個多部分操作} catch (Throwable e) {e.printStackTrace();}return null;}/*** 解密* * @param src* byte[]* @param password* String* @return byte[]* @throws Exception*/public static byte[] decrypt(byte[] src, String password) throws Exception {// DES算法要求有一個可信任的隨機數源SecureRandom random = new SecureRandom();// 創建一個DESKeySpec對象DESKeySpec desKey = new DESKeySpec(password.getBytes());// 創建一個密匙工廠SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");// 返回實現指定轉換的// Cipher// 對象// 將DESKeySpec對象轉換成SecretKey對象SecretKey securekey = keyFactory.generateSecret(desKey);// Cipher對象實際完成解密操作Cipher cipher = Cipher.getInstance("DES");// 用密匙初始化Cipher對象cipher.init(Cipher.DECRYPT_MODE, securekey, random);// 真正開始解密操作return cipher.doFinal(src);} }

?

總結

以上是生活随笔為你收集整理的对称加密整个过程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。