如何解决PHP编码的DES-EDE3-CBC数据在java中解码
我必须将属于 php 的方法转换为 java,但我得到了属于错误。我不确定我错过了什么。有什么想法可以将 php 代码转换为 java 或者是否有任何库可以进行此解密。
php解密代码;
function decrypt3Des($encryptedData,$dataEncryptionKey)
{
$encryptedData = base64_decode($encryptedData);
$key = hex2bin($dataEncryptionKey);
$key .= substr($key,8);
$out = openssl_decrypt(
$encryptedData,'DES-EDE3-CBC',$key,OPENSSL_RAW_DATA,str_repeat(chr(0),8)
);
$packing = ord($out{strlen($out) - 1});
if ($packing && ($packing < 8)) {
for ($p = strlen($out) - 1; $p >= strlen($out) - $packing; $p--) {
if (ord($out{$p}) !== $packing) {
$packing = 0;
}
}
$out = substr($out,strlen($out) - $packing);
}
return $out;
}
java 加密
public static String decrypt(String k) {
try {
String s = new String(hexDecode(k));
String key = s.concat(s.substring(0,8));
String data = new String(Base64.decodeBase64("XW8oqMUBCKLZLvHicZTebA=="));
SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes("ISO-8859-1"),"DESede");
Cipher cipher = Cipher.getInstance(TRIPLE_DES);
cipher.init(Cipher.DECRYPT_MODE,skeySpec);
byte[] decodedEncryptedData = Base64.decodeBase64(data);
byte[] original = cipher.doFinal(decodedEncryptedData);
return new String(original);
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
public static byte[] hexDecode(String hex) {
ByteArrayOutputStream bas = new ByteArrayOutputStream();
for (int i = 0; i < hex.length(); i += 2) {
int b = Integer.parseInt(hex.substring(i,i + 2),16);
bas.write(b);
}
return bas.toByteArray();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。