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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

对称加密整个过程

發(fā)布時(shí)間:2024/4/13 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 对称加密整个过程 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

對(duì)稱加密

對(duì)稱密碼技術(shù):發(fā)件人和收件人使用其共同擁有的單個(gè)密鑰 ,這種密鑰既用于加密,也用于解密,叫做機(jī)密密鑰(也稱為對(duì)稱密鑰或會(huì)話密鑰)。

????能夠提供信息機(jī)密性(沒(méi)有密鑰信息不能被解密)、完整性(被改變的信息不能被解密)的服務(wù)。

????對(duì)稱式密碼學(xué)又稱:單鑰密碼學(xué)、秘密密鑰密碼學(xué)、會(huì)話密鑰密碼學(xué)、私鑰密碼學(xué)、共享秘鑰密碼學(xué)

常見(jiàn)的對(duì)稱式加密技術(shù)

?DES(數(shù)據(jù)加密標(biāo)準(zhǔn)):分組式加密,算法源于Lucifer,作為NIST對(duì)稱式加密標(biāo)準(zhǔn);64位(有效位56位、校驗(yàn)8位),分組算法

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

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

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

????RC4:流密碼,密鑰長(zhǎng)度可變

????RC5:分組密碼,密鑰長(zhǎng)度可變,最大2048位

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

????AES(高級(jí)加密標(biāo)準(zhǔn)):DES升級(jí)版,算法出自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是一種對(duì)稱加密算法,所謂對(duì)稱加密算法即:加密和解密使用相同密鑰的算法。DES加密算法出自IBM的研究,* 后來(lái)被美國(guó)政府正式采用,之后開始廣泛流傳,但是近些年使用越來(lái)越少,因?yàn)镈ES使用56位密鑰,以現(xiàn)代計(jì)算能力,* 24小時(shí)內(nèi)即可被破解。雖然如此,在某些簡(jiǎn)單應(yīng)用中,我們還是可以使用DES加密算法,本文簡(jiǎn)單講解DES的JAVA實(shí)現(xiàn) 。* 注意:DES加密和解密過(guò)程中,密鑰長(zhǎng)度都必須是8的倍數(shù)*/ public class DES {public DES() {}// 測(cè)試public static void main(String args[]) throws Exception {// 待加密內(nèi)容String str = "leon666";// 密碼,長(zhǎng)度要是8的倍數(shù) 密鑰隨意定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());// 創(chuàng)建一個(gè)密匙工廠,然后用它把DESKeySpec轉(zhuǎn)換成SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");SecretKey securekey = keyFactory.generateSecret(desKey);// Cipher對(duì)象實(shí)際完成加密操作Cipher cipher = Cipher.getInstance("DES");// 用密匙初始化Cipher對(duì)象,ENCRYPT_MODE用于將 Cipher 初始化為加密模式的常量cipher.init(Cipher.ENCRYPT_MODE, securekey, random);// 現(xiàn)在,獲取數(shù)據(jù)并加密// 正式執(zhí)行加密操作return cipher.doFinal(datasource); // 按單部分操作加密或解密數(shù)據(jù),或者結(jié)束一個(gè)多部分操作} 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算法要求有一個(gè)可信任的隨機(jī)數(shù)源SecureRandom random = new SecureRandom();// 創(chuàng)建一個(gè)DESKeySpec對(duì)象DESKeySpec desKey = new DESKeySpec(password.getBytes());// 創(chuàng)建一個(gè)密匙工廠SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");// 返回實(shí)現(xiàn)指定轉(zhuǎn)換的// Cipher// 對(duì)象// 將DESKeySpec對(duì)象轉(zhuǎn)換成SecretKey對(duì)象SecretKey securekey = keyFactory.generateSecret(desKey);// Cipher對(duì)象實(shí)際完成解密操作Cipher cipher = Cipher.getInstance("DES");// 用密匙初始化Cipher對(duì)象cipher.init(Cipher.DECRYPT_MODE, securekey, random);// 真正開始解密操作return cipher.doFinal(src);} }

?

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。