Java 3DES 加解/密程式
package trades.lib.utils;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESedeKeySpec;
public class Des3Crypt {
private static final String Algorithm = "DESede/ECB/PKCS5Padding";
// private static final String Algorithm = "DES";
// 3DES加密法方法
public static String encrypt(byte[] cipherTextByte) {
SecretKey scKey = null;// 獲取金鑰key
Cipher cipher = null;// 加解密器
byte[] outputBytes = null;// 加密/解密後的資料包
byte[] inputBytes = cipherTextByte;// 加密/解密前的資料包
try {
DESedeKeySpec desKeySpec = new DESedeKeySpec(
"zhaochenghuitanfangpinga".getBytes("UTF-8"));
SecretKeyFactory keyFactory = SecretKeyFactory
.getInstance("DESede");
scKey = keyFactory.generateSecret(desKeySpec);
cipher = Cipher.getInstance(Algorithm);// 生成解密器
} catch (Exception e) {
e.printStackTrace();
}
String plainTextStr = null;
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
ByteArrayInputStream in = new ByteArrayInputStream(inputBytes);
int opmode = Cipher.ENCRYPT_MODE;
cipher.init(opmode, scKey);
int blockSize = cipher.getBlockSize();
int outputSize = cipher.getOutputSize(blockSize);
byte[] inBytes = new byte[blockSize];
byte[] outBytes = new byte[outputSize];
byte[] appendBytes = new byte[blockSize];
int realLength = 0;
boolean fit = true;
while (fit) {
realLength = in.read(inBytes);
if (realLength == blockSize) {
int ol = cipher.update(inBytes, 0, blockSize, outBytes);
out.write(outBytes, 0, ol);
} else {
fit = false;
}
}
// int outputLength = cipher.doFinal(appendBytes, 0,
// blockSize,outBytes);
if (realLength > 0 && realLength 0) {
outBytes = cipher.doFinal(inBytes, 0, realLength);
} else {
outBytes = cipher.doFinal();
}
// byte[] outBytes=cipher.doFinal(plainTextByte);
out.write(outBytes);
outputBytes = out.toByteArray();
retTextByte = outputBytes;
// System.out.println("3des明文的長度:"+retTextByte.length+"t3des明文:" + new String(retTextByte));
out.flush();
if (in != null)
in.close();
if (out != null)
out.close();
} catch (Exception e) {
e.printStackTrace();
}
return new String(retTextByte);
}
public void init(String key) {
}
public static void main(String[] args) {
String pin1 = "888888";
String pinVlaue = encrypt(pin1.getBytes());
System.out.println(pinVlaue);
String c=decrypt(pinVlaue);
System.out.print(c);
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/818/viewspace-2798815/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JAVA和C# 3DES加密解密JavaC#3D加密解密
- 密碼加SALT原理密碼
- 關於java加殼和程式碼混淆Java
- 3DES加解密-EncryptAndDecryptFile3D解密
- 在程式前加一個密碼輸入框的過程!密碼
- elasticsearch加賬號密碼登入Elasticsearch密碼
- 加減密和數字簽名
- 記錄 Openssl 替代 Mcrypt 3DES CBC 演算法解決方案3D演算法
- Java基礎加強筆記——測試、反射、註解Java筆記反射
- java基礎加強Java
- java時間加減Java
- 加鹽密碼雜湊:如何正確使用密碼
- JAVA程式設計師面試總結,高手整理加強版Java程式設計師面試
- 大棚解讀卓越程式設計師密碼程式設計師密碼
- DES/3DES/AES 三種對稱加密演算法在 Java 中的實現3D加密演算法Java
- Hill密碼(Java)密碼Java
- 加鹽hash儲存密碼的正確方式密碼
- 深入瞭解Java社群程式Java
- JAVA面試 基礎加強與鞏固:反射、註解、泛型等Java面試反射泛型
- Golang實現ECB模式3DES演算法Golang模式3D演算法
- 使用雜湊加鹽法來為密碼加密【轉】密碼加密
- SpringMVC詳解(補加)SpringMVC
- css加背景圖程式碼CSS
- 直播系統app原始碼,shiro簡單的密碼加鹽與密碼驗證APP原始碼密碼
- 參加java培訓要學多久Java
- 參加java培訓需要學多久Java
- 圖解Java程式編譯解釋過程圖解Java編譯
- 我為什麼會從程式不喜歡加{}到加{}
- JAVA基礎加強篇12——單元測試、反射、註解、動態代理Java反射
- 參加IT程式設計培訓,究竟是選擇Python還是Java?程式設計PythonJava
- 自己寫的一個 java 解壓 rar zip 帶密碼 檔案Java密碼
- 用 JS 程式碼解釋 Java StreamJSJava
- elasticsearch的java程式碼操作詳解ElasticsearchJava
- java程式設計思想之註解Java程式設計
- 論加鎖否:程式日誌
- 程式間通訊如何加鎖
- Java 程式碼本地設定Hadoop使用者名稱密碼JavaHadoop密碼
- 不用加減乘除做加法(Java實現)Java