android典型程式碼系列(三十)------DES加密演算法
DES加密演算法
import java.security.InvalidKeyException;
import java.security.Key;
import java.security.NoSuchAlgorithmException;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;
public class DES {
public DES() {}
public static DES getInstance(String key) throws NoSuchPaddingException,
NoSuchAlgorithmException {
return getInstance(getKeyByStr(key));
}
public static DES getInstance(byte key[]) throws NoSuchPaddingException,
NoSuchAlgorithmException {
DES des = new DES();
if (des.key == null) {
SecretKeySpec spec = new SecretKeySpec(key, "DES");
des.key = spec;
}
des.cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
return des;
}
public byte[] encrypt(byte b[]) throws InvalidKeyException,
BadPaddingException, IllegalBlockSizeException,
IllegalStateException {
byte byteFina[] = null;
cipher.init(1, key);
byteFina = cipher.doFinal(b);
return byteFina;
}
public byte[] decrypt(byte b[]) throws InvalidKeyException,
BadPaddingException, IllegalBlockSizeException,
IllegalStateException {
byte byteFina[] = null;
cipher.init(2, key);
byteFina = cipher.doFinal(b);
return byteFina;
}
public static byte[] getKeyByStr(String str) {
byte bRet[] = new byte[str.length() / 2];
for (int i = 0; i < str.length() / 2; i++) {
Integer itg = new Integer(16 * getChrInt(str.charAt(2 * i))
+ getChrInt(str.charAt(2 * i + 1)));
bRet[i] = itg.byteValue();
}
return bRet;
}
private static int getChrInt(char chr) {
int iRet = 0;
if (chr == "0".charAt(0))
iRet = 0;
if (chr == "1".charAt(0))
iRet = 1;
if (chr == "2".charAt(0))
iRet = 2;
if (chr == "3".charAt(0))
iRet = 3;
if (chr == "4".charAt(0))
iRet = 4;
if (chr == "5".charAt(0))
iRet = 5;
if (chr == "6".charAt(0))
iRet = 6;
if (chr == "7".charAt(0))
iRet = 7;
if (chr == "8".charAt(0))
iRet = 8;
if (chr == "9".charAt(0))
iRet = 9;
if (chr == "A".charAt(0))
iRet = 10;
if (chr == "B".charAt(0))
iRet = 11;
if (chr == "C".charAt(0))
iRet = 12;
if (chr == "D".charAt(0))
iRet = 13;
if (chr == "E".charAt(0))
iRet = 14;
if (chr == "F".charAt(0))
iRet = 15;
return iRet;
}
private Key key;
private Cipher cipher;
/**
* @interpret 進行base64加密操作
* @param text
* @param keyString
* @return String
*/
public String encrypt(String text, String keyString) {
String body = null;
try {
DES des = DES.getInstance(keyString);
byte[] b = des.encrypt(text.getBytes("UTF8"));
body = new String(Base64.encodeBase64(b));
} catch (Exception ex) {
}
return body;
}
/**
* @interpret 進行base64進行解密
* @param text
* @param keyString
* @return String
*/
public String decrypt(String text, String keyString) {
String body = null;
try {
DES des = DES.getInstance(keyString);
byte[] b = Base64.decodeBase64(text.getBytes());
body = new String(des.decrypt(b), "UTF8");
} catch (Exception e) {
e.printStackTrace();
}
return body;
}
public String authcode(String content, String operation, String key){
String encontent = null;
if (operation != null && operation.equals("DECODE")) {
encontent = encrypt(content,key);
} else if (operation != null && operation.equals("ENCODE")) {
encontent = decrypt(content,key);
}
return encontent;
}
public static void main(String[] args) {
DES des = new DES();
System.out.println(des.authcode("wewweewewew=","DECODE","0102030405060708"));
System.out.println(des.authcode("d8fPhfd9JkW99p8aqhtVIA==","ENCODE","0102030405060708"));
}
}
相關文章
- android典型程式碼系列(十六)------GPS定位Android
- Android資料加密之Des加密Android加密
- 對稱加密演算法----DES加密演算法加密演算法
- android典型程式碼系列(二十五)------popupwindow的使用Android
- DES加密加密
- 詳細解析DES系列加密技術(二)加密
- 詳細解析DES系列加密技術(一)加密
- java 實現 DES加密 解密演算法Java加密解密演算法
- android典型程式碼系列(二十六)------App widget的使用AndroidAPP
- 《密碼學系列》|| 詳解密碼學的多重DES演算法...密碼學解密演算法
- android典型程式碼系列(二十八)------通話記錄的操作Android
- android典型程式碼系列(十七)------C程式碼中加入LOG_引入標頭檔案AndroidC程式
- DES演算法C++程式碼實現-密碼學演算法C++密碼學
- DES加密詳解加密
- DES加密簡述加密
- DES演算法揭秘:資料加密的前沿技術演算法加密
- android典型程式碼系列(二十)------多執行緒下載、斷點續傳Android執行緒斷點
- android典型程式碼系列(二十二)------按鍵使上面的EditText抖動Android
- android典型程式碼系列(二十九)------簡訊資料庫操作相關Android資料庫
- DES/3DES/AES 三種對稱加密演算法在 Java 中的實現3D加密演算法Java
- DES加密中文亂碼問題的解決加密
- 用vb實現DES加解密演算法(二)--加密 (轉)解密演算法加密
- 密碼學之DES/AES演算法密碼學演算法
- 關於Javascript的des加密JavaScript加密
- C#DES加密和解密C#加密解密
- DES對稱資料加密加密
- 【知識積累】DES演算法之C#加密&Java解密演算法C#加密Java解密
- DES加密演算法在門禁系統中應用 (轉)加密演算法
- DES原理及程式碼實現
- AES和DES程式碼實現
- C語言實現DES加密C語言加密
- 密碼學系列之:bcrypt加密演算法詳解密碼學加密演算法
- DES演算法 (轉)演算法
- android典型程式碼系列(二十四)------獲取某個應用程式所佔用的記憶體Android記憶體
- 加密解密演算法系列加密解密演算法
- 區塊鏈背後的資訊保安(2) DES、3DES加密演算法原理及其GO語言實現區塊鏈3D加密演算法Go
- 常用加密解密演算法【RSA、AES、DES、MD5】介紹和使用加密解密演算法
- 深入理解Triple DES演算法:安全加密的基礎與應用演算法加密