
1.png (14.53 KB, 下载次数: 3)
下载附件
2025-7-22 20:31 上传

2.png (58.15 KB, 下载次数: 3)
下载附件
2025-7-22 20:31 上传

3.png (82.34 KB, 下载次数: 2)
下载附件
2025-7-22 20:31 上传

4.png (8.78 KB, 下载次数: 3)
下载附件
2025-7-22 20:36 上传

5.png (16.02 KB, 下载次数: 3)
下载附件
2025-7-22 20:49 上传
[Java] 纯文本查看 复制代码
public static String encryptToString(String str) { try { return getCompletePayload(str, readPublicKeyFromFile(KEY_FILE)); } catch (IOException unused) { return null; } }[Java] 纯文本查看 复制代码
private static String getCompletePayload(String str, PublicKey publicKey) { try { String substring = UUID.randomUUID().toString().substring(0, 24); String encrypt = encrypt(substring, str); String encrypt2 = encrypt(substring, String.valueOf(System.currentTimeMillis())); Cipher cipher = Cipher.getInstance(ALGORITHM); cipher.init(1, publicKey); byte[] doFinal = cipher.doFinal(substring.getBytes()); String encodeToString = android.util.Base64.encodeToString(doFinal, 0, doFinal.length, 2); return "data=" + URLEncoder.encode(encrypt, CHARSET) + "&key=" + URLEncoder.encode(encodeToString, CHARSET) + "×tamp=" + URLEncoder.encode(encrypt2, CHARSET) + "&dataContentType=" + URLEncoder.encode(ContentType.JSON_PROXY_MONEY, CHARSET); } catch (UnsupportedEncodingException | InvalidKeyException | NoSuchAlgorithmException | BadPaddingException | IllegalBlockSizeException | NoSuchPaddingException unused) { return null; } }[Java] 纯文本查看 复制代码
String substring = UUID.randomUUID().toString().substring(0, 24);[Java] 纯文本查看 复制代码
String encrypt = encrypt(substring, str);[Java] 纯文本查看 复制代码
Cipher cipher = Cipher.getInstance(ALGORITHM); cipher.init(1, publicKey); byte[] doFinal = cipher.doFinal(substring.getBytes());[Java] 纯文本查看 复制代码
private static String encrypt(String str, String str2) { byte[] bArr = new byte[24]; if (str == null) { new SecureRandom().nextBytes(bArr); } else { System.arraycopy(str.getBytes(), 0, bArr, 0, 24); } try { SecretKey generateSecret = SecretKeyFactory.getInstance("DESede").generateSecret(new DESedeKeySpec(bArr)); Cipher cipher = Cipher.getInstance(generateSecret.getAlgorithm()); cipher.init(1, generateSecret); byte[] doFinal = cipher.doFinal(str2.getBytes(CHARSET)); return android.util.Base64.encodeToString(doFinal, 0, doFinal.length, 2); } catch (UnsupportedEncodingException | InvalidKeyException | NoSuchAlgorithmException | InvalidKeySpecException | BadPaddingException | IllegalBlockSizeException | NoSuchPaddingException unused) { return ""; } }[Python] 纯文本查看 复制代码
from Crypto.Cipher import DES3 from Crypto.Util.Padding import unpad import base64 def decrypt_3des_ecb(encrypted_base64: str, key_str: str) -> str: """ 解密使用Java函数加密的3DES-ECB数据 参数: encrypted_base64: Base64编码的加密字符串 key_str: 密钥字符串(长度不足24字节时用0填充) 返回: 解密后的原始字符串 """ # 处理密钥(与Java逻辑一致) key_bytes = key_str.encode('utf-8') if len(key_bytes) < 24: # 不足24字节时用0填充 key_bytes = key_bytes.ljust(24, b'\x00') else: # 超过24字节时截取前24字节 key_bytes = key_bytes[:24] # 解码Base64密文 encrypted_bytes = base64.b64decode(encrypted_base64) # 创建3DES-ECB解密器 cipher = DES3.new(key_bytes, DES3.MODE_ECB) # 解密并去除PKCS5填充 decrypted_bytes = cipher.decrypt(encrypted_bytes) unpadded_bytes = unpad(decrypted_bytes, DES3.block_size) # 假设原始编码是UTF-8(根据Java代码中的CHARSET) return unpadded_bytes.decode('utf-8') if __name__ == "__main__": encrypted_data = "xxxxxxxxxxxx" # 替换为实际加密数据 # 密钥(与加密时使用的相同) key = "bc52a640-7bda-49d8-9a25-" # 长度不足24字节 decrypted_text = decrypt_3des_ecb(encrypted_data, key) print(f"Decrypted Text: {decrypted_text}")


查看全部评分