자바 특정 키 에 따라 문자열 복호화
package com.test;
import java.io.IOException;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
public class CryptoUtilTest {
private final static String DES = "DES";
private final static String ENCODE = "GBK";
/**
* Description
* @param data
* @param key
* @return
* @throws Exception
*/
public static String encrypt(String data, String key) throws Exception {
byte[] bt = encrypt(data.getBytes(ENCODE), key.getBytes(ENCODE));
String strs = new BASE64Encoder().encode(bt);
return strs;
}
/**
*
* @param data
* @param key
* @return
* @throws IOException
* @throws Exception
*/
public static String decrypt(String data, String key) throws IOException,Exception {
if (data == null)
return null;
BASE64Decoder decoder = new BASE64Decoder();
byte[] buf = decoder.decodeBuffer(data);
byte[] bt = decrypt(buf, key.getBytes(ENCODE));
return new String(bt, ENCODE);
}
/**
* Description
*
* @param data
* @param key
* byte
* @return
* @throws Exception
*/
private static byte[] encrypt(byte[] data, byte[] key) throws Exception {
//
SecureRandom sr = new SecureRandom();
// DESKeySpec
DESKeySpec dks = new DESKeySpec(key);
// , DESKeySpec SecretKey
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
SecretKey securekey = keyFactory.generateSecret(dks);
// Cipher
Cipher cipher = Cipher.getInstance(DES);
// Cipher
cipher.init(Cipher.ENCRYPT_MODE, securekey, sr);
return cipher.doFinal(data);
}
/**
* Description
*
* @param data
* @param key byte
* @return
* @throws Exception
*/
private static byte[] decrypt(byte[] data, byte[] key) throws Exception {
//
SecureRandom sr = new SecureRandom();
// DESKeySpec
DESKeySpec dks = new DESKeySpec(key);
// , DESKeySpec SecretKey
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
SecretKey securekey = keyFactory.generateSecret(dks);
// Cipher
Cipher cipher = Cipher.getInstance(DES);
// Cipher
cipher.init(Cipher.DECRYPT_MODE, securekey, sr);
return cipher.doFinal(data);
}
public static void main(String[] args){
String data = "12AU@_@is(m)8;1:'0js:\"]\"qASI08";
String key ="qwerrewq"; //
System.out.println(" ===>"+data);
try {
String jiami = encrypt(data, key);
System.err.println(" :"+jiami );
String jiemi = decrypt(jiami, key);
System.err.println(" :"+jiemi);
} catch (Exception e) {
System.out.println(" "+" "+" ");
e.printStackTrace();
}
}
}
다음으로 전송:https://www.cnblogs.com/sunhaoyu/p/10704346.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.