强奸久久久久久久|草草浮力在线影院|手机成人无码av|亚洲精品狼友视频|国产国模精品一区|久久成人中文字幕|超碰在线视屏免费|玖玖欧洲一区二区|欧美精品无码一区|日韩无遮一区二区

首頁 > 廠商 > 經(jīng)驗 > 3DES,為什么3des的中間部分采用了解密而不是加密

3DES,為什么3des的中間部分采用了解密而不是加密

來源:整理 時間:2023-08-15 05:36:22 編輯:智能門戶 手機版

本文目錄一覽

1,為什么3des的中間部分采用了解密而不是加密

這樣做的好處是當你用同樣的key(即k1=k2=k3=k)帶入E(k3,D(k2,E(k1,m)))時,里面兩層的D和E消去,3DES就會退化為一個普通的DES。

為什么3des的中間部分采用了解密而不是加密

2,到底什么是3倍DES

就是價錢貴三倍再看看別人怎么說的。
就是3des,你可以理解為使用3個不同的密鑰對每個明文數(shù)據(jù)塊進行了3次des加密:3DES加密過程為:C=Ek3(Dk2(Ek1(M)))3DES解密過程為:M=Dk1(EK2(Dk3(C))E表示加密算法,D表示解密算法。

到底什么是3倍DES

3,什么是MAC 3EDS算法

MAC是在CPU卡通訊中的一種數(shù)據(jù)保護的算法方式;就是將要傳松的數(shù)據(jù)通過MAC計算,產(chǎn)生MAC碼跟在數(shù)據(jù)串后面,發(fā)送給設(shè)備,設(shè)備接收到數(shù)據(jù)后,用相同的算法驗證下MAC是否正確,如果正確,就行進數(shù)據(jù)處理,否則就提示MAC碼錯誤;3DES的MAC碼計算一般是把數(shù)據(jù)分段成8字節(jié)的來進行運算,的,不足8字節(jié)的需要補齊,首先用第一個數(shù)據(jù)塊和初試數(shù)據(jù)進行異或,然后用左8字節(jié)的密碼進行DES加密,將結(jié)果和第二包數(shù)據(jù)異或,在用左8字節(jié)的密碼加密,知道最后一包數(shù)據(jù),然后在右8字節(jié)的密碼DES解密,然后再用左8字節(jié)的密碼進行DES加密得到8個字節(jié)的MAC碼.
不明白啊 = =!

什么是MAC 3EDS算法

4,高分求關(guān)于java的3des加密的bug解決辦法要求能用16位key并且不

在java中調(diào)用sun公司提供的3DES加密解密算法時,需要使用到$JAVA_HOME/jre/lib/目錄下如下的4個jar包: jce.jar security/US_export_policy.jar security/local_policy.jar ext/sunjce_provider.jar Java運行時會自動加載這些包,因此對于帶main函數(shù)的應(yīng)用程序不需要設(shè)置到CLASSPATH環(huán)境變量中。對于WEB應(yīng)用,不需要把這些包加到WEB-INF/lib目錄下。 以下是java中調(diào)用sun公司提供的3DES加密解密算法的樣本代碼: 加密解密代碼 import java.security.Security; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; /*字符串 DESede(3DES) 加密*/ public class ThreeDes /** * @param args在java中調(diào)用sun公司提供的3DES加密解密算法時,需要使 * 用到$JAVA_HOME/jre/lib/目錄下如下的4個jar包: *jce.jar *security/US_export_policy.jar *security/local_policy.jar *ext/sunjce_provider.jar */ private static final String Algorithm ="DESede"; //定義加密算法,可用 DES,DESede,Blowfish //keybyte為加密密鑰,長度為24字節(jié) //src為被加密的數(shù)據(jù)緩沖區(qū)(源) public static byte[] encryptMode(byte[] keybyte,byte[] src) try //生成密鑰 SecretKey deskey = new SecretKeySpec(keybyte, Algorithm); //加密 Cipher c1 = Cipher.getInstance(Algorithm); c1.init(Cipher.ENCRYPT_MODE, deskey); return c1.doFinal(src);//在單一方面的加密或解密 } catch (java.security.NoSuchAlgorithmException e1) // TODO: handle exception e1.printStackTrace(); }catch(javax.crypto.NoSuchPaddingException e2) e2.printStackTrace(); }catch(java.lang.Exception e3) e3.printStackTrace(); } return null; } //keybyte為加密密鑰,長度為24字節(jié) //src為加密后的緩沖區(qū) public static byte[] decryptMode(byte[] keybyte,byte[] src) try //生成密鑰 SecretKey deskey = new SecretKeySpec(keybyte, Algorithm); //解密 Cipher c1 = Cipher.getInstance(Algorithm); c1.init(Cipher.DECRYPT_MODE, deskey); return c1.doFinal(src); } catch (java.security.NoSuchAlgorithmException e1) // TODO: handle exception e1.printStackTrace(); }catch(javax.crypto.NoSuchPaddingException e2) e2.printStackTrace(); }catch(java.lang.Exception e3) e3.printStackTrace(); } return null; } //轉(zhuǎn)換成十六進制字符串 public static String byte2Hex(byte[] b) String hs=""; String stmp=""; for(int n=0; nstmp = (java.lang.Integer.toHexString(b[n]& 0XFF)); if(stmp.length()==1){ hs = hs + "0" + stmp; }else{ hs = hs + stmp; } if(n } return hs.toUpperCase(); } public static void main(String[] args) { // TODO Auto-generated method stub //添加新安全算法,如果用JCE就要把它添加進去 Security.addProvider(new com.sun.crypto.provider.SunJCE()); final byte[] keyBytes = {0x11, 0x22, 0x4F, 0x58, (byte)0x88, 0x10, 0x40, 0x38, 0x28, 0x25, 0x79,0x51, (byte)0xCB, (byte)0xDD, 0x55, 0x66, 0x77, 0x29, 0x74, (byte)0x98, 0x30, 0x40, 0x36, (byte)0xE2 }; //24字節(jié)的密鑰 String szSrc = "This is a 3DES test. 測試"; System.out.println("加密前的字符串:" + szSrc); byte[] encoded = encryptMode(keyBytes,szSrc.getBytes()); System.out.println("加密后的字符串:" + new String(encoded)); byte[] srcBytes = decryptMode(keyBytes,encoded); System.out.println("解密后的字符串:" + (new String(srcBytes))); } }
你好!代碼發(fā)出來希望對你有所幫助,望采納。

5,如何用Java進行3DES加密解密

這里是例子,直接拿來用就可以了。package com.nnff.des; import java.security.Security; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; /*字符串 DESede(3DES) 加密 * ECB模式/使用PKCS7方式填充不足位,目前給的密鑰是192位 * 3DES(即Triple DES)是DES向AES過渡的加密算法(1999年,NIST將3-DES指定為過渡的 * 加密標準),是DES的一個更安全的變形。它以DES為基本模塊,通過組合分組方法設(shè)計出分組加 * 密算法,其具體實現(xiàn)如下:設(shè)Ek()和Dk()代表DES算法的加密和解密過程,K代表DES算法使用的 * 密鑰,P代表明文,C代表密表,這樣, * 3DES加密過程為:C=Ek3(Dk2(Ek1(P))) * 3DES解密過程為:P=Dk1((EK2(Dk3(C))) * */ public class ThreeDes /** * @param args在java中調(diào)用sun公司提供的3DES加密解密算法時,需要使 * 用到$JAVA_HOME/jre/lib/目錄下如下的4個jar包: *jce.jar *security/US_export_policy.jar *security/local_policy.jar *ext/sunjce_provider.jar */ private static final String Algorithm = "DESede"; //定義加密算法,可用 DES,DESede,Blowfish //keybyte為加密密鑰,長度為24字節(jié) //src為被加密的數(shù)據(jù)緩沖區(qū)(源) public static byte[] encryptMode(byte[] keybyte,byte[] src) try //生成密鑰 SecretKey deskey = new SecretKeySpec(keybyte, Algorithm); //加密 Cipher c1 = Cipher.getInstance(Algorithm); c1.init(Cipher.ENCRYPT_MODE, deskey); return c1.doFinal(src);//在單一方面的加密或解密 } catch (java.security.NoSuchAlgorithmException e1) // TODO: handle exception e1.printStackTrace(); }catch(javax.crypto.NoSuchPaddingException e2) e2.printStackTrace(); }catch(java.lang.Exception e3) e3.printStackTrace(); } return null; } //keybyte為加密密鑰,長度為24字節(jié) //src為加密后的緩沖區(qū) public static byte[] decryptMode(byte[] keybyte,byte[] src) try //生成密鑰 SecretKey deskey = new SecretKeySpec(keybyte, Algorithm); //解密 Cipher c1 = Cipher.getInstance(Algorithm); c1.init(Cipher.DECRYPT_MODE, deskey); return c1.doFinal(src); } catch (java.security.NoSuchAlgorithmException e1) // TODO: handle exception e1.printStackTrace(); }catch(javax.crypto.NoSuchPaddingException e2) e2.printStackTrace(); }catch(java.lang.Exception e3) e3.printStackTrace(); } return null; } //轉(zhuǎn)換成十六進制字符串 public static String byte2Hex(byte[] b) String hs=""; String stmp=""; for(int n=0; nstmp = (java.lang.Integer.toHexString(b[n]& 0XFF)); if(stmp.length()==1){ hs = hs + "0" + stmp; }else{ hs = hs + stmp; } if(n } return hs.toUpperCase(); } public static void main(String[] args) { // TODO Auto-generated method stub //添加新安全算法,如果用JCE就要把它添加進去 Security.addProvider(new com.sun.crypto.provider.SunJCE()); final byte[] keyBytes = {0x11, 0x22, 0x4F, 0x58, (byte)0x88, 0x10, 0x40, 0x38, 0x28, 0x25, 0x79, 0x51, (byte)0xCB, (byte)0xDD, 0x55, 0x66, 0x77, 0x29, 0x74, (byte)0x98, 0x30, 0x40, 0x36, (byte)0xE2 }; //24字節(jié)的密鑰 String szSrc = "This is a 3DES test. 測試"; System.out.println("加密前的字符串:" + szSrc); byte[] encoded = encryptMode(keyBytes,szSrc.getBytes()); System.out.println("加密后的字符串:" + new String(encoded)); byte[] srcBytes = decryptMode(keyBytes,encoded); System.out.println("解密后的字符串:" + (new String(srcBytes))); } }
public static string encryptkey(string mainkey,string plainkey){ string encryptkey = ""; try{ security.addprovider(new org.bouncycastle.jce.provider.bouncycastleprovider()); string algorithm = "desede/ecb/nopadding"; byte[] hb = hex2byte(mainkey.getbytes()); byte[] k = new byte[24]; system.arraycopy(hb,0,k,0,16); system.arraycopy(hb,0,k,16,8); secretkey deskey = new secretkeyspec(k, algorithm); cipher c1 = cipher.getinstance(algorithm); c1.init(cipher.encrypt_mode, deskey); encryptkey = byte2hex(c1.dofinal(hex2byte(plainkey.getbytes()))); }catch(exception e){ e.printstacktrace(); } return encryptkey; }public static string byte2hex(byte[] b) { string hs = ""; string stmp = ""; for (int n = 0; n < b.length; n++) { stmp = integer.tohexstring(b[n] & 0xff); if (stmp.length() == 1) hs += ("0" + stmp); else hs += stmp; } return hs.touppercase(); } 3des的加密密鑰長度要求是24個字節(jié),本例中因為給定的密鑰只有16個字節(jié),所以需要填補至24個字節(jié)。
文章TAG:3DES為什么3des的中間部分采用了解密而不是加密

最近更新

  • 電容充電,電容是怎樣進行充電的電容充電,電容是怎樣進行充電的

    電容是怎樣進行充電的2,關(guān)于復(fù)雜電路電容充電3,大電容是怎樣充電的4,電容器的充放電的過程怎樣的5,問一個關(guān)于電容充電原理的問題6,請微觀解釋電容器充電過程1,電容是怎樣進行充電的電容的兩.....

    經(jīng)驗 日期:2023-08-15

  • 蜂窩數(shù)據(jù)apn在哪蜂窩數(shù)據(jù)apn在哪

    ...APNin蜂窩數(shù)據(jù)如何設(shè)置用戶名和密碼?在哪里注冊?普網(wǎng)蜂窩-2/網(wǎng)內(nèi)第一個apn進入cmnet,退出。如何在iphone上設(shè)置apn?蜂窩數(shù)據(jù)APN是什么?蜂窩手機數(shù)據(jù)APN是:cmnet1,首先用戶要進入設(shè)置選項,.....

    經(jīng)驗 日期:2023-08-15

  • 行業(yè)分析 大數(shù)據(jù)行業(yè),目前外貿(mào)行業(yè)的行業(yè)分析行業(yè)分析 大數(shù)據(jù)行業(yè),目前外貿(mào)行業(yè)的行業(yè)分析

    大數(shù)據(jù)分析行業(yè)前景如何?有哪些半導(dǎo)體行業(yè)數(shù)據(jù)分析?2.-1分析division-1分析division是數(shù)據(jù)division的一種,指不同的行業(yè),專攻行業(yè)。大數(shù)據(jù)行業(yè)發(fā)展如何?Big數(shù)據(jù)行業(yè)就業(yè)三大方向及十大職業(yè).....

    經(jīng)驗 日期:2023-08-15

  • 魅族5s數(shù)據(jù)連接不上去魅族5s數(shù)據(jù)連接不上去

    連接否?為什么魅族針對手機數(shù)據(jù)Line連接電腦、魅族僅手機顯示-3連接怎么回事?魅族否連接移動網(wǎng)絡(luò),魅藍5s如何連接電腦連接電腦連接如何做網(wǎng)絡(luò)1。魅族手機上網(wǎng)怎么用電腦網(wǎng)絡(luò)都可以,設(shè)置方.....

    經(jīng)驗 日期:2023-08-15

  • 備備手機數(shù)據(jù)備份器,小米手機數(shù)據(jù)備份到電腦備備手機數(shù)據(jù)備份器,小米手機數(shù)據(jù)備份到電腦

    如何制作手機全部內(nèi)容備份如果使用vivo手機,可以使用云服務(wù)備份。具體方法如下:1,進入“云服務(wù)”APP設(shè)備云備份數(shù)據(jù)選型需求備份-3/立即返回上一頁/,打開“自動云備份”每7天備份-3/當設(shè).....

    經(jīng)驗 日期:2023-08-15

  • 芒果tv自動關(guān)機芒果tv自動關(guān)機

    6.找到芒果TV的右下角并勾選,然后點擊“一鍵停止”關(guān)閉芒果tvStart自動Start。芒果tv如何定期關(guān)閉?芒果tvBoot自動如何關(guān)閉開機芒果如何取消電視的開機自動運行應(yīng)用:thinkpadE480windows.....

    經(jīng)驗 日期:2023-08-15

  • 金立數(shù)據(jù)報告,金立手機怎么清除數(shù)據(jù)金立數(shù)據(jù)報告,金立手機怎么清除數(shù)據(jù)

    金立手機m6splus顯示聯(lián)系人停止運行時發(fā)生了什么??梢渣c擊“發(fā)送錯誤報告”,或者點擊“發(fā)送錯誤報告”,然后備份手機聯(lián)系人,打開設(shè)置→高級設(shè)置→全部→通訊錄→清除,你點擊發(fā)送錯誤報告.....

    經(jīng)驗 日期:2023-08-15

  • gita 機器人 結(jié)構(gòu)gita 機器人 結(jié)構(gòu)

    業(yè)機器人按機械結(jié)構(gòu)可分為串聯(lián)機器人和并聯(lián)機器人。機器人聯(lián)驅(qū)結(jié)構(gòu)什么事?1)自重小:提高機器人運行的動態(tài)性能;行業(yè)構(gòu)成機器人結(jié)構(gòu)?美國Atlas機器人美國Atlas機器人Atlas機器人(Atlasrobo.....

    經(jīng)驗 日期:2023-08-15