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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- elasticsearch加賬號密碼登入Elasticsearch密碼
- 記錄 Openssl 替代 Mcrypt 3DES CBC 演算法解決方案3D演算法
- Java基礎加強筆記——測試、反射、註解Java筆記反射
- Hill密碼(Java)密碼Java
- 加鹽hash儲存密碼的正確方式密碼
- Golang實現ECB模式3DES演算法Golang模式3D演算法
- SpringMVC詳解(補加)SpringMVC
- Java 程式碼本地設定Hadoop使用者名稱密碼JavaHadoop密碼
- 直播系統app原始碼,shiro簡單的密碼加鹽與密碼驗證APP原始碼密碼
- 參加IT程式設計培訓,究竟是選擇Python還是Java?程式設計PythonJava
- 用 JS 程式碼解釋 Java StreamJSJava
- elasticsearch的java程式碼操作詳解ElasticsearchJava
- 自己寫的一個 java 解壓 rar zip 帶密碼 檔案Java密碼
- JAVA程式設計題-用java解決兔子問題Java程式設計
- 參加java培訓需要學多久Java
- 參加java培訓要學多久Java
- 我為什麼會從程式不喜歡加{}到加{}
- JAVA基礎加強篇12——單元測試、反射、註解、動態代理Java反射
- python_hashlib,md5,getpass, 密碼加密,隱藏,加鹽Python密碼加密
- 論加鎖否:程式日誌
- 程式間通訊如何加鎖
- java網路程式設計(TCP詳解)Java程式設計TCP
- 重走JAVA程式設計之路(二)註解Java程式設計
- Java 網路程式設計 —— Socket 詳解Java程式設計
- 使用註解配置、使用java程式碼配置Java
- 萬字詳解 | Java 流式程式設計Java程式設計
- win10怎麼加指紋密碼_win10指紋密碼鎖如何新增指紋Win10密碼
- 參加長沙Java培訓怎麼才能學好Java?Java
- 不參加長沙Java培訓如何深入學習JavaJava
- 學java是不是必須要參加java培訓班?Java
- 愷撒密碼Java/Python實現密碼JavaPython
- 參加長沙Java培訓前景如何?程式設計師30歲會被裁嗎?Java程式設計師
- Java併發程式設計(一)Thread詳解Java程式設計thread
- Java 併發程式設計(一) → LockSupport 詳解Java程式設計
- 好程式設計師教程分享Java註解和運用註解程式設計程式設計師Java
- 一加6截圖方法詳解 一加6怎麼截圖?
- 一個不讓用加號的需求而引發的Java位運算詳解Java
- 不想參加長沙Java培訓,如何學好Java找工作Java