나는이 스레드에서 암호화 PHP 알고리즘을 만들려고 오전 :PHP DES 암호화 - 암호화 기능
이how to sync encryption between delphi and php using dcpcrypt (shunty의 답변을 참조) 여기
는 내가 지금까지 무엇을 가지고 :
echo encrypt("this is a test", "test");
:
function encrypt($str, $key)
{
$keysize = mcrypt_get_key_size(MCRYPT_DES, MCRYPT_MODE_CBC);
$ivbytes = array(72, 163, 99, 62, 219, 111, 163, 114);
$iv = implode(array_map("chr", $ivbytes));
$pad = ord($str[strlen($str) - 1]);
$enc = substr($str, 0, strlen($str) - $pad);
$enc = base64_encode($str);
$k = mhash(MHASH_SHA1, $key);
//return substr($dec, 0, strlen($dec) - $pad);
$dec = mcrypt_encrypt(MCRYPT_DES, substr($k, 0, $keysize), $enc, MCRYPT_MODE_CBC, $iv);
return $dec;
}
는 내가 잘못하고 있지만 그것을 테스트하고있어 확실하지 않다 Z =«RCdrçb~hý'¯á · 오 가 제공해야 할 때 : 내가 잘못 가고 어디 WRaG/8xlxqqcTAJ5UAk4DA의 ==를
사람이 설명에 나를 도와 드릴까요, 정말 도움을 주셔서 감사합니다 것 (3210)
출력을 제공합니다 나는 갈 수있어.
편집 :
function encrypt_SO($str, $key)
{
$keysize = mcrypt_get_key_size(MCRYPT_DES, MCRYPT_MODE_CBC);
$ivbytes = array(72, 163, 99, 62, 219, 111, 163, 114);
$iv = implode(array_map("chr", $ivbytes));
$pad = ord($str[strlen($str) - 1]);
$enc = substr($str, 0, strlen($str) - $pad);
$k = mhash(MHASH_SHA1, $key);
//return substr($dec, 0, strlen($dec) - $pad);
$dec = mcrypt_encrypt(MCRYPT_DES, substr($k, 0, $keysize), $enc, MCRYPT_MODE_CBC, $iv);
return base64_encode($dec);
}
끝까지 인코딩을 옮겼다.
편집 2 : 모든 사람의 도움이 게시물 솔루션 덕분에 :
이암호화 :
function encrypt_SO($str, $key)
{
$keysize = mcrypt_get_key_size(MCRYPT_DES, MCRYPT_MODE_CBC);
$ivbytes = array(72, 163, 99, 62, 219, 111, 163, 114);
$iv = implode(array_map("chr", $ivbytes));
$k = mhash(MHASH_SHA1, $key);
$blocksize = mcrypt_get_block_size(MCRYPT_DES, MCRYPT_MODE_CBC);
$padsize = $blocksize - (strlen($str) % $blocksize);
$str .= str_repeat(chr($padsize), $padsize);
return base64_encode(mcrypt_encrypt(MCRYPT_DES, substr($k, 0, $keysize), $str, MCRYPT_MODE_CBC, $iv));
}
'WRaG/8xlxqqcTAJ5UAk4DA == '가베이스 64 인코딩 된 패딩을 제거'ž«RCdrçb~hý'¯á · 오. –
아,하지만 이것을 사용했습니다 : $ enc = base64_encode ($ str); - 맞지 않아? 나는 패딩을 이해하려고 노력하고 있었지만 나는 어딘가에서 실수를 저질렀다고 생각한다. – user1928362
당신이 거기에 내 의견의 추진력을 변경 말할 수 있습니다. –