-2
$KEY = "Your KEY";
$IV = "Your IV";
function addpadding($string, $blocksize = 32)
{
$len = strlen($string);
$pad = $blocksize - ($len % $blocksize);
$string .= str_repeat(chr($pad), $pad);
return $string;
}
function strippadding($string)
{
$slast = ord(substr($string, -1));
$slastc = chr($slast);
$pcheck = substr($string, -$slast);
if(preg_match("/$slastc{".$slast."}/", $string)){
$string = substr($string, 0, strlen($string)-$slast);
return $string;
} else {
return false;
}
}
function encrypt($string = "")
{
global $KEY,$IV;
$key = base64_decode($KEY);
$iv = base64_decode($IV);
return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, addpadding($string), MCRYPT_MODE_CBC, $iv));
}
function decrypt($string = "")
{
global $KEY,$IV;
$key = base64_decode($KEY);
$iv = base64_decode($IV);
$string = base64_decode($string);
return strippadding(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $string, MCRYPT_MODE_CBC, $iv));
}
我在尋找確切的實施不只是庫的引用,所以我自己張貼的答案。我在Scala編碼,但起初我要求Java增加儘快獲得答案的機會,因此實現採用Scala語言。
沒有等價物,因爲Sun JCE不提供Rijndael-256。 –
那麼我怎樣才能使用他們的API?他們不能改變他們的實現,他們用.NET編寫應用程序,只是有.NET和PHP的文檔! –
在[這個問題]中的實現(http://stackoverflow.com/questions/15804895/rijndael-256-encryption-java-and-net-do-not-match)似乎接近你所需要的。使用BouncyCastle Rijndael引擎。 –