Jon*_*ill 0 php java mcrypt jasypt
这可能是一个不可能的问题,但我将遗留系统从Java迁移到PHP,我需要能够解密用PHP中的Jasypt加密的字符串.
根据文档,Jasypt使用以下算法:
遗留应用程序使用PBEWithMD5AndDESJasypt算法.我完全清楚MD5不是为解密而设计的,这不是我想要做的.
我只想对字符串进行DES解密,这样我剩下的就是MD5哈希.我似乎无法获得除PHP之外的二进制垃圾.我错过了什么?
<?php
#jasypt.algorithm=PBEWithMD5AndDES
$secret = 'secret-password';
$encrypted = 'xh/roK2diJPDfZGlT9DlwuG2TsS7t7F+';
$cipher = MCRYPT_DES;
$modes = array(
'ecb' => MCRYPT_MODE_ECB,
'cbc' => MCRYPT_MODE_CBC,
'cfb' => MCRYPT_MODE_CFB,
'ofb' => MCRYPT_MODE_OFB,
'nofb' => MCRYPT_MODE_NOFB,
'stream' => MCRYPT_MODE_STREAM,
);
foreach($modes as $mode => $mc) {
$iv_len = 0; //mcrypt_get_iv_size($cipher, $mode);
$password = base64_decode($encrypted);
$salt = substr($password, 0, $iv_len);
$data = substr($password, $iv_len);
for($i = 0; $i < 1000; $i++) {
$data = @mcrypt_decrypt($cipher, $secret, $data, $mode, $salt);
}
var_dump("$mode: $i: $data");
}
Run Code Online (Sandbox Code Playgroud)
您不了解"PBEWithMD5AndDES"的含义.
PBEWithMD5AndDES表示使用MD5对加密密码(字符串)进行哈希处理,以获得用作DES算法的加密密钥输入的字节数组以及要加密的文本.
因此,为了获得MD5哈希,无法使用DES进行解密.这是没有意义的.您只需使用完全相同的算法解密该加密数据,但在PHP实现中.
顺便说一句,"PBEWithMD5AndDES"不是"jasypt算法".它是Java密码术扩展(JCE)算法.Jasypt本身并没有实现任何算法.
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
3035 次 |
| 最近记录: |