【发布时间】:2016-02-14 21:47:48
【问题描述】:
我有一个 PHP 加密功能。我需要一个java计数器部分。由于我对PHP的了解有限,我无法理解。有人懂这两种语言,请帮忙。
PHP 代码:
function encrypt($decrypted, $keyvalue) {
// Build a 256-bit $key which is a SHA256 hash of $keyvalue.
$key = hash('SHA256', $keyvalue, true);
// Build $iv and $iv_base64. We use a block size of 128 bits (AES compliant) and CBC mode. (Note: ECB mode is inadequate as IV is not used.)
srand(); $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_RAND);
if (strlen($iv_base64 = rtrim(base64_encode($iv), '=')) != 22) return false;
// Encrypt $decrypted and an MD5 of $decrypted using $key. MD5 is fine to use here because it's just to verify successful decryption.
$encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $decrypted . md5($decrypted), MCRYPT_MODE_CBC, $iv));
// We're done!
return $iv_base64 . $encrypted;
}
提前致谢 阿尼鲁达
【问题讨论】:
-
显然每行代码都有cmets!所以你应该能够用java编写代码,例如:对于第一行评论,你可以从stackoverflow.com/questions/5531455/…开始
-
这段代码中存在一些严重的密钥派生和 MAC 漏洞。我建议使用久经考验的库,而不是使用自己的密码学或从互联网上复制粘贴代码。
-
感谢您的回复。我不知道的东西很少,比如 MCRYPT_RIJNDAEL_128 , MCRYPT_MODE_CBC。这就是我问的原因。我尝试使用 JavaBridge.jar 从 java 执行 PHP 脚本。但这也需要 PHP 在机器上。所以我有点卡住了。
标签: java php encryption