note 84147 added to mcrypt.examples

From: Date: Tue, 01 Jul 2008 07:36:04 +0000
Subject: note 84147 added to mcrypt.examples
Groups: php.notes 
Request: Send a blank email to php-notes+get-141023@lists.php.net to get a copy of this message
Ok after having a problem using triple des with .net/visual basic with php I think this could help someone: Visual Basic 9 with .net 2.0 Encrypting as a stream into the IO/Memory as bytes Then they get converted back after encryption I wanted to use base64 encoding to store the VB encryption The problem I found was ... I could En/Decrypt within VB and PHP just fine But when I tried to encrypt one in VB and decrypt in PHP I got the wrong values with the mcrypt function alone I found that at least with VB9 that the stream encryption uses a UTF char that is the value for how many missing bytes left in the 8 bit stream. So if you encrypt 1234 it will add chr(4) four times (the amount of missing bytes) In php use chr otherwise most browsers/client cant read it. Im not good at explaining things but the php code I figured out is below. It will find the missing bytes on input as visual basic does and replace as needed. For both encryption and decryption. Example is triple_des and cbc with self key and iv for storing in base64 $key = "E4HD9h4DhS23DYfhHemkS3Nf";// 24 bit Key $iv = "fYfhHeDm";// 8 bit IV $input = "Text to encrypt";// text to encrypt $bit_check=8;// bit amount for diff algor. $str= encrypt($input,$key,$iv,$bit_check); echo "Start: $input - Excrypted: $str - Decrypted: ".decrypt($str,$key,$iv,$bit_check); function encrypt($text,$key,$iv,$bit_check) { $text_num =str_split($text,$bit_check); $text_num = $bit_check-strlen($text_num[count($text_num)-1]); for ($i=0;$i<$text_num; $i++) {$text = $text . chr($text_num);} $cipher = mcrypt_module_open(MCRYPT_TRIPLEDES,'','cbc',''); mcrypt_generic_init($cipher, $key, $iv); $decrypted = mcrypt_generic($cipher,$text); mcrypt_generic_deinit($cipher); return base64_encode($decrypted); } function decrypt($encrypted_text,$key,$iv,$bit_check){ $cipher = mcrypt_module_open(MCRYPT_TRIPLEDES,'','cbc',''); mcrypt_generic_init($cipher, $key, $iv); $decrypted = mdecrypt_generic($cipher,base64_decode($encrypted_text)); mcrypt_generic_deinit($cipher); $last_char=substr($decrypted,-1); for($i=0;$i<$bit_check-1; $i++){ if(chr($i)==$last_char){ $decrypted=substr($decrypted,0,strlen($decrypted)-$i); break; } } return $decrypted; } ---- Server IP: 209.41.74.194 Probable Submitter: 66.74.12.246 ---- Manual Page -- http://www.php.net/manual/en/mcrypt.examples.php Edit -- https://master.php.net/note/edit/84147 Del: integrated -- https://master.php.net/note/delete/84147/integrated Del: useless -- https://master.php.net/note/delete/84147/useless Del: bad code -- https://master.php.net/note/delete/84147/bad+code Del: spam -- https://master.php.net/note/delete/84147/spam Del: non-english -- https://master.php.net/note/delete/84147/non-english Del: in docs -- https://master.php.net/note/delete/84147/in+docs Del: other reasons-- https://master.php.net/note/delete/84147 Reject -- https://master.php.net/note/reject/84147 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#141023) next »