[Java] 纯文本查看 复制代码 import android.util.Base64;
import com.tom.ule.api.base.util.UleLog;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import kotlin.UByte;
public class DESSecret {
public static String encryptDES(String str, String str2, byte[] bArr) throws Exception {
IvParameterSpec ivParameterSpec = new IvParameterSpec(bArr);
SecretKeySpec secretKeySpec = new SecretKeySpec(str2.getBytes("UTF-8"), "DES");
Cipher instance = Cipher.getInstance("DES/CBC/PKCS5Padding");
instance.init(1, secretKeySpec, ivParameterSpec);
return URLEncoder.encode(Base64.encodeToString(instance.doFinal(str.getBytes("UTF-8")), 0), "UTF-8");
}
上边代码是我从一个app里面逆出来的一个DES加密算法,调用方式为:
[JavaScript] 纯文本查看 复制代码 String encryptDES = DESSecret.encryptDES(this.phoneNumber, key2, umobile_iv);
其中,key2 = “6fd4b7f4” 或 “1pd8b501” ,iv 的定义在以下两处:
[Java] 纯文本查看 复制代码 public static final byte[] mobile_iv = {4, 7, 8, 15, 8, 9, 7, 0};
public static final byte[] iv = {13, 8, 3, 16, 23, 6, 11, 5};
app算出的结果是:
加密前:123456 加密后:Gj6G4YXJZmI%253D%250A
加密前:18888888888 加密后:orN%252F3lU4eVoxd1%252B47Q%252FHQg%253D%253D%250A
有大佬可以根据这些线索用易语言或者JS还原一下这个DES吗?
|