php mdecrypt generic,mdecrypt_generic
用戶評(píng)論:
[#1]
Ulysse [2013-11-07 14:27:03]
Based?on?the?information?provided?by?"jakub?dot?lopuszanski?at?nasza-klasa?dot?pl"?that?in?PKCS#7,?the?last?byte?contains?the?number?of?byte?to?remove?(see?RFC?5652,?part?6.3),?and?for?those?like?me?who?like?to?copy?paste?an?already-made?snippet:
{$last=substr($data,?-1);
returnsubstr($data,0,strlen($data)?-ord($last));
}?>
Now?you?have?no?more?reason?to?use?rtrim()?to?remove?the?padding?at?the?end?of?the?result.
[#2]
jakub dot lopuszanski at nasza-klasa dot pl [2013-06-25 07:16:24]
For?all?those?of?you?which?are?"surprised"?by?the?padding?(even?though?it?is?mentioned?in?the?description?of?the?method)?please?do?not?just?"strip?away?everything?which?I?do?not?understand".
The?approach?with?rtrim,?rtrim?"\0",?removing?all?charcodes?
The?PKCS?#7?padding?works?just?as?described?in??RFC?5652.
To?remove?it,?just?look?at?the?last?byte?of?the?message,?and?it?will?tell?you?how?many?bytes?to?remove.
For?example,?if?the?last?byte?is?equal?to?\0A,?then?remove?10?bytes.
[#3]
Peter Bailey [2012-03-19 17:49:30]
We?found?that?sometimes?the?resulting?padding?is?not?null?characters?"\0"?but?rather?one?of?several?control?characters.
If?you?know?your?data?is?not?supposed?to?have?any?trailing?control?characters?"as?we?did"?you?can?strip?them?like?so.
$data=mdecrypt_generic($cipher,$data);//?Strip?trailing?control-character?padding$data=preg_replace("/\p{Cc}*$/u","",$data);?>
[#4]
trashmail dot hashishin at gmail dot com [2010-06-01 00:46:59]
Whenever?you?need?to?decrypt?files?encrypted?with?dot.net?(and?others?)?you?can?use?the?following?settings:
Encryption:?'rijndael-256'
Mode:?'cbc'
Padding-Mode:?Zeros
iv:?"yes"
encode?the?data?with?base64?to?send?them?to?your?php?script
[#5]
Anonymous [2009-03-21 19:31:48]
Here's?a?quick?snippet?for?removing?PKCS7?padding:
if?($length>0)?{$first=substr($data,?-1);
if?(ord($first)?<=$blockSize)?{
for($i=$length-2;$i>0;$i--)
if?(ord($data[$i]?!=$first))
break;
returnsubstr($data,0,$i);
}
}
return$data;
}?>
[#6]
nytro_rst at yahoo dot com [2009-02-09 03:33:17]
//?$text?=?The?text?that?you?want?to?encrypt.
//?$key?=?The?key?you're?using?to?encrypt.
//?$alg?=?The?algorithm.
//?$crypt?=?1?if?you?want?to?crypt,?or?0?if?you?want?to?decrypt.functioncryptare($text,$key,$alg,$crypt)
{$encrypted_data="";
switch($alg)
{
case"3des":$td=mcrypt_module_open('tripledes','','ecb','');
break;
case"cast-128":$td=mcrypt_module_open('cast-128','','ecb','');
break;
case"gost":$td=mcrypt_module_open('gost','','ecb','');
break;
case"rijndael-128":$td=mcrypt_module_open('rijndael-128','','ecb','');
break;
case"twofish":$td=mcrypt_module_open('twofish','','ecb','');
break;
case"arcfour":$td=mcrypt_module_open('arcfour','','ecb','');
break;
case"cast-256":$td=mcrypt_module_open('cast-256','','ecb','');
break;
case"loki97":$td=mcrypt_module_open('loki97','','ecb','');
break;
case"rijndael-192":$td=mcrypt_module_open('rijndael-192','','ecb','');
break;
case"saferplus":$td=mcrypt_module_open('saferplus','','ecb','');
break;
case"wake":$td=mcrypt_module_open('wake','','ecb','');
break;
case"blowfish-compat":$td=mcrypt_module_open('blowfish-compat','','ecb','');
break;
case"des":$td=mcrypt_module_open('des','','ecb','');
break;
case"rijndael-256":$td=mcrypt_module_open('rijndael-256','','ecb','');
break;
case"xtea":$td=mcrypt_module_open('xtea','','ecb','');
break;
case"enigma":$td=mcrypt_module_open('enigma','','ecb','');
break;
case"rc2":$td=mcrypt_module_open('rc2','','ecb','');
break;
default:$td=mcrypt_module_open('blowfish','','ecb','');
break;
}$iv=mcrypt_create_iv(mcrypt_enc_get_iv_size($td),MCRYPT_RAND);$key=substr($key,0,mcrypt_enc_get_key_size($td));mcrypt_generic_init($td,$key,$iv);
if($crypt)
{$encrypted_data=mcrypt_generic($td,$text);
}
else
{$encrypted_data=mdecrypt_generic($td,$text);
}mcrypt_generic_deinit($td);mcrypt_module_close($td);
return$encrypted_data;
}?>
[#7]
Silvan [2007-08-17 00:34:42]
It?is?generally?not?recommended?to?just?use?rtrim?to?remove?the?padding.
Use?rtrim($str,?"\0")?for?strings?that?do?not?end?in?"\0"?or?store?the?data?length?during?encryption.
(Although?data?containing?"\0"?sometimes?gets?corrupted?during?encryption?so?these?types?of?data?actually?should?be?packed.)
For?example:
{$length=strlen($original_data);$data_to_encrypt=$length.'|'.$original_data;//?Encrypt?the?data?including?its?length.
//?Do?not?save?the?length?unencrypted,?as?this?could?be?a?(minor)?security?risk}
functiondecrypt($cypher)
{//?Decrypt?the?cypher?data?first
//?Next?retrieve?the?original?datalist($length,$padded_data)?=explode('|',$decrypted_data,2);$original_data=substr($padded_data,0,$length);
}?>
[#8]
php at pcwize dot com [2006-10-12 14:59:08]
Just?confirming?the?.DLL?issues.?With?4.3.4?you?need?the?older?.DLL.?I'm?guessing?any?version?of?PHP4?needs?the?older?.DLL.?With?PHP5?you?need?the?newer?one.
[#9]
drew at expressdynamics dot com [2005-07-05 10:07:11]
On?Win32?systems?with?PHP?5,?you?must?use?the?newer?libmcrypt.dll?file,?otherwise?mdecrypt_generic?will?not?work.
[#10]
robbie [at] averill [dot] co [dot] nz [2005-03-24 03:15:58]
I?have?noticed?that?sometimes?when?the?binary?ciphertext?is?longer?than?the?plaintext,?the?decrypted?plaintext?can?have?some?little?boxes/squares?next?to?it?as?'padding'.?I?also?noticed?that?you?can't?cut?and?paste?them?to?be?able?to?edit?them?out,?but?i?did?find?a?solution.
Just?call?rtrim()?around?the?string?and?it?removes?them.
[#11]
jon@jonroig dot com [2004-04-07 19:29:17]
Here's?a?bit?of?encrypt/decrypt?code.
If?you're?using?this?on?the?win32?platform,?BEWARE!?The?latest?DLL?(19-Jan-2004)?contains?a?bug?that?keeps?mdecrypt_generic?from?functioning.?Nearly?drove?me?over?the?edge...?The?30-Dec-2002?version?seems?to?work?with?no?trouble.
$key="this?is?a?secret?key";$input="Let?us?meet?at?9?o'clock?at?the?secret?place.";$td=mcrypt_module_open('tripledes','','ecb','');$iv=mcrypt_create_iv(mcrypt_enc_get_iv_size($td),MCRYPT_RAND);mcrypt_generic_init($td,$key,$iv);$encrypted_data=mcrypt_generic($td,$input);mcrypt_generic_deinit($td);mcrypt_module_close($td);
echo"Encrypt:?".$encrypted_data;
echo"
";$td=mcrypt_module_open('tripledes','','ecb','');$iv=mcrypt_create_iv(mcrypt_enc_get_iv_size($td),MCRYPT_RAND);$key=substr($key,0,mcrypt_enc_get_key_size($td));mcrypt_generic_init($td,$key,$iv);$decrypted_data=mdecrypt_generic($td,$encrypted_data);
echo"Decrypt:?".$decrypted_data;mcrypt_generic_deinit($td);mcrypt_module_close($td);?>
總結(jié)
以上是生活随笔為你收集整理的php mdecrypt generic,mdecrypt_generic的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: php表格之间设置间隔,html表格如何
- 下一篇: 源码包编译PHP5.6,源码编译安装ph