1. 程式人生 > >Java☞DES加解密演算法簡介及實現

Java☞DES加解密演算法簡介及實現

Java加密解密之對稱加密演算法DES

  資料加密演算法(Data Encryption Algorithm,DEA)是一種對稱加密演算法,很可能是使用最廣泛的金鑰系統,特別是在保護金融資料的安全中,最初開發的DEA是嵌入硬體中的。通常,自動取款機(Automated Teller Machine,ATM)都使用DEA。它出自IBM的研究工作,IBM也曾對它擁有幾年的專利權,但是在1983年已到期後,處於公有範圍中,允許在特定條件下可以免除專利使用費而使用。1977年被美國政府正式採納。

  1998年後實用化DES破譯機的出現徹底宣告DES演算法已不具備安全性,1999年NIST頒佈新標準,規定DES演算法只能用於遺留加密系統,但不限制使用DESede演算法。當今DES演算法正是推出歷史舞臺,AES演算法稱為他的替代者。

  加密原理

  DES 使用一個 56 位的金鑰以及附加的 8 位奇偶校驗位,產生最大 64 位的分組大小。這是一個迭代的分組密碼,使用稱為 Feistel 的技術,其中將加密的文字塊分成兩半。使用子金鑰對其中一半應用迴圈功能,然後將輸出與另一半進行“異或”運算;接著交換這兩半,這一過程會繼續下去,但 最後一個迴圈不交換。DES 使用 16 個迴圈,使用異或,置換,代換,移位操作四種基本運算。

  JDK對DES演算法的支援

  金鑰長度:56位

  工作模式:ECB/CBC/PCBC/CTR/CTS/CFB/CFB8 to CFB128/OFB/OBF8 to OFB128

  填充方式:Nopadding/PKCS5Padding/ISO10126Padding/

  Java 加密解密之對稱加密演算法DESede

  DESede 即三重DES加密演算法,也被稱為3DES或者Triple DES。使用三(或兩)個不同的金鑰對資料塊進行三次(或兩次)DES加密(加密一次要比進行普通加密的三次要快)。三重DES的強度大約和112- bit的金鑰強度相當。通過迭代次數的提高了安全性,但同時也造成了加密效率低的問題。正因DESede演算法效率問題,AES演算法誕生了。

  到目前為止,還沒有人給出攻擊三重DES的有效方法。對其金鑰空間中金鑰進行蠻幹搜尋,那麼由於空間太大,這實際上是不可行的。若用差分攻擊的方法,相對於單一DES來說複雜性以指數形式增長。

  三重DES有四種模型

  (a)DES-EEE3,使用三個不同金鑰,順序進行三次加密變換。

  (b)DES-EDE3,使用三個不同金鑰,依次進行加密-解密-加密變換。

  (c)DES-EEE2,其中金鑰K1=K3,順序進行三次加密變換。

  (d)DES-EDE2, 其中金鑰K1=K3,依次進行加密-解密-加密變換。

  Java對DES演算法的加密程式碼

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 package com.favccxx.codelib; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; public class EncryptCoder { private final static String DES = "DES"

相關推薦

JavaDES解密演算法簡介實現

Java加密解密之對稱加密演算法DES   資料加密演算法(Data Encryption Algorithm,DEA)是一種對稱加密演算法,很可能是使用最廣泛的金鑰系統,特別是在保護金融資料的安全中,最初開發的DEA是嵌入硬體中的。通常,自動取款機(Aut

JAVA】常用解密演算法總結JAVA實現【BASE64,MD5,SHA,DES,3DES,AES,RSA】

BASE64 這其實是一種編解碼方法,但是隻要我們能夠將原文變成肉眼不可識別的內容,其實就是一種加密的方法。 BASE64 的編碼都是按字串長度,以每 3 個 8 bit 的字元為一組,然後針對每組,首先獲取每個字元的 ASCII 編碼,然後將 ASCII 編碼轉換成 8

C#/JAVA/PHP 互通DES解密演算法(ECB模式支援8位)

import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingE

java rsa解密算法的實現

binary 0x03 object sat ear exc triple turn create RSAUtils:RSA加解密的實現 package com.rsa.test; import java.io.ByteArrayOutputStream; import

CF演算法簡介實現

cf演算法全稱“Collaborative Filtering”,即協同過濾演算法。協同過濾演算法是非常強大與成熟(古老)的一套演算法。它廣泛應用於電子商務系統等領域。  協同過濾演算法的出現標誌著推薦系統的產生。 協同過濾簡單來說是利用某興趣相投、擁有共同經驗之群體的喜好

Apriori演算法簡介實現(python)

Apriori這個詞的意思是“先驗的”,從priori這個詞根可以猜出來~;) 。該演算法用於從資料中挖掘頻繁項資料集以及關聯規則。其核心原理是基於這樣一類“先驗知識”:  如果一個數據項在資料庫中是頻繁出現的,那麼該資料項的子集在資料庫中也應該是頻繁出現的(命題1)

Java 10進位制byte陣列與16進位制byte陣列互轉 DES解密中的使用

一、10進位制byte陣列與16進位制byte陣列互轉 1. 10進位制byte陣列轉成16進位制byte陣列 Java中10進位制byte用二進位制表示佔用8位,16進位制的每個字元需要用4位二進位制位來表示,則將每一個10進位制 位元組的高4位、低4位分別進行處理,對應

Java實現DES加密解密演算法

import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFact

JAVA SHA-1加密DES解密

//獲取祕鑰 public static SecretKey readKey(){ try { String skey = "XXXXXXXXXXXXXXX"; byte[] bs = skey.getBytes("UTF8"); //建立DESKeySpec物件

使用python實現RSA解密演算法(包含讀取檔案操作),檔案內容為16進位制字串,同時實現對學號姓名的加密——(SCU應用密碼學實驗)

#-*- coding:UTF-8 -*- ''' time: 2018-5-30 content:RSA python 3.6 mac os ''' from random import randint import random im

JavaDES解密解析

  說明:上篇RSA是一種非對稱的加解密演算法,今天這種是一種對稱的加解密演算法DESDES演算法的入口引數有三個:Key、Data、Mode。其中Key為7個位元組共56位,是DES演算法的工作金鑰;Data為8個位元組64位,是要被加密或被解密的資料;Mode為DES的工作方式,有兩種:加密或解密。Jav

DES加密解密演算法C語言程式碼實現

程式碼: 1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 /*------------------------ 5 定義列舉型全域性變數 6 -----

可通用的C#與JavaDes解密程式碼

最近專案中需要將Java的DES加密的內容,用C#解密。這裡僅做記錄。1、Java版import java.io.UnsupportedEncodingException; import java.security.SecureRandom; import javax.cr

Java常見幫助類(8)DES解密

/** * Created by lenovo on 2016/12/13. * DES加解密 */ public class DESUtils { /** * DES金鑰 */ private static String

網路安全學習之C語言版DES加密解密演算法的程式設計與實現

其實明白了DES演算法的流程程式設計實現是不難的,當然可能會在S盒實現那碰到點問題。下面的DES演算法包括加密和解密兩個功能,主要有生成16個子金鑰和DES演算法的主程式組成。輸出的資訊有16輪子金鑰以及每輪的中間值以及最後的結果。具體的程式碼中都有註釋,就看程式碼吧。關於D

常見解密演算法opensll的使用

上篇寫了關於jni的使用blog,本文主要在於使用c++實現一些加解密演算法,然後供android開發使用; 首先補充加解密的知識及基本概念 對稱加密VS非對稱加密、公鑰VS私鑰、簽名/驗證、資訊摘要  公鑰加密資料,然後私鑰解密的情況被稱為加密解密,私鑰加密資料,公鑰

ios objective-c java php des解密統一

轉來的–>原文地址 用到裡面的iOS和java是OK的。 java: import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.

des解密(JavaScript&Java

前言:剛學h5沒多久,感覺吧比android難多了啊,特別是適配,真尼瑪苦逼啊,不過h5的大牛還是很多的,畢竟這麼多年了,隨便一搜就一大堆,正是因為這樣,今天剛好後臺需要用des對稱加密傳輸資料,然後就上網一搜,真尼瑪一大堆啊,最後找到了一個叫crypto-js

Java與Delphi交叉DES解密的問題

何為交叉加解密? ——Java加密、Delphi解密,或 Delphi加密、Java解密。 近日,手頭上當前的專案進展到優化、完善階段,其中一點是需要增強服務端與客戶端通訊的安全性,考慮採用對報文進行DES加密的方法來實現。 服務端是Java編寫的,客戶端是Delphi

JAVADES解密在linux與windows下的相容問題(從ITEYE搬家過來的)

        前段時間做了DES加密解密,採用的是javax下的DES演算法,在windows下寫的倒挺快,現在部署到linux上測試的時候,組長一臉嚴肅的找到我,聲色俱厲地問我為毛測試資料都不能解密了!你寫的什麼JB毛演算法!馬上就要測試了!你給我搞神馬!    天地良心,我測的很棒的,還拉出來那個小