PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

mcrypt_ecb> <mcrypt_create_iv
Last updated: Fri, 05 Sep 2008

view this page in

mcrypt_decrypt

(PHP 4 >= 4.0.2, PHP 5)

mcrypt_decrypt指定したパラメータで暗号化されたテキストを復号する

説明

string mcrypt_decrypt ( string $cipher , string $key , string $data , string $mode [, string $iv ] )

data を復号し、復号されたデータを返します。

パラメータ

cipher

cipher には、アルゴリズム名を表す定数 MCRYPT_暗号名 の一つを文字列で指定します。

key

key は、データを暗号化する際のキーです。 必要なキー長よりも短い場合には、'\0' で埋められます。

data

data は、指定した暗号およびモードで復号 されます。データの大きさが n * blocksize でない場合、データは、 '\0' で埋められます。

mode

mode には、"ecb", "cbc", "cfb", "ofb", "nofb" ,"stream" のどれかを用いて定数 MCRYPT_MODE_モード名を 指定します。

iv

パラメータ IV は、CBC, CFB, OFB モードおよび STREAM モードのいくつかのアルゴリズムの初期化の際に使用されます。 アルゴリズムで必要とする IV を指定しない場合、この関数は警告を発生し、 全てのバイトを '\0' に設定した IV を使用します。

返り値

復号されたデータを文字列で返します。



mcrypt_ecb> <mcrypt_create_iv
Last updated: Fri, 05 Sep 2008
 
add a note add a note User Contributed Notes
mcrypt_decrypt
smp_info at yahoo dot com
11-Oct-2007 08:27
Since the returned data seems to be still padded with extra characters, you can get *only* the original data that was encrypted by str_replace()'ing the \x0 characters.

<?php
$decryptedData
= str_replace("\x0", '', $encryptedData);
?>
eddiec at stararcher dot com
14-Jul-2005 03:26
It appears that mcrypt_decrypt pads the *RETURN STRING* with nulls ('\0') to fill out to n * blocksize.  For old C-programmers, like myself, it is easy to believe the string ends at the first null.  In PHP it does not:

    strlen("abc\0\0") returns 5 and *NOT* 3
    strcmp("abc", "abc\0\0") returns -2 and *NOT* 0

I learned this lesson painfully when I passed a string returned from mycrypt_decrypt into a NuSoap message, which happily passed the nulls along to the receiver, who couldn't figure out what I was talking about.

My solution was:
<?
    $retval
= mcrypt_decrypt( ...etc ...);
   
$retval = rtrim($retval, "\0");     // trim ONLY the nulls at the END
?>
kooktroop at gmail dot com
09-Jul-2004 12:13
Following on from the mcrypt_encrypt() example:

<?php
$text
= "boggles the inivisble monkey will rule the world";
$key = "This is a very secret key";

$iv_size = mcrypt_get_iv_size(MCRYPT_XTEA, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
echo
strlen($text) . "<br>";

$enc = mcrypt_encrypt(MCRYPT_XTEA, $key, $text, MCRYPT_MODE_ECB, $iv);
echo
strlen($enc) . "<br>";
  
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$key = "This is a very secret key";
$text = "Meet me at 11 o'clock behind the monument.";
echo
strlen($text) . "<br>";

$crypttext = mcrypt_decrypt(MCRYPT_XTEA, $key, $enc, MCRYPT_MODE_ECB, $iv);
echo
"$crypttext<br>";
?>

mcrypt_ecb> <mcrypt_create_iv
Last updated: Fri, 05 Sep 2008
 
 
show source | credits | sitemap | contact | advertising | mirror sites