<div dir="ltr"><div><div><div><div><div><div><div>I was thinking that is handled internally...<br><br></div>however, this did the trick (for randomiv mode of operation):<br><br>blowfish_key_from_key(Key) -><br>    Temp = crypto:md5(Key),<br>    blowfish_key_from_key1(Temp).<br><br>blowfish_key_from_key1(Temp) when size(Temp) < 56 -><br>    Temp1 = crypto:md5(Temp),<br>    blowfish_key_from_key1(<<Temp/binary, Temp1/binary>>);<br><br>blowfish_key_from_key1(Temp) -> <br>    <<Temp1:56/binary, _Rest/bitstring>> = Temp,<br>    Temp1.<br><br></div>I think that crypto should have this kind oh helper functions<br></div>because , like in cases of blowfish cipher , whose key length can<br></div>be variable, could be useful in using the cipher correctly, and people <br></div>would know that some things are not implied.<br><br></div>Thanks,<br></div>Bogdan<br><div><div><div><div><div><div><div><br></div></div></div></div></div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Nov 10, 2015 at 1:15 PM, Dmitry Kolesnikov <span dir="ltr"><<a href="mailto:dmkolesnikov@gmail.com" target="_blank">dmkolesnikov@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello,<br>
<br>
Yes, this want I thought. You are using wrong key to decrypt data on Erlang side.<br>
<br>
Please notice that<br>
<br>
“Crypt::CBC can derive the key and the IV from a passphrase that you provide, or can let you specify the true key and IV manually…<br>
<br>
The -key argument provides either a passphrase to use to generate the encryption key, or the literal value of the block cipher key. If used in passphrase mode (which is the default), -key can be any number of characters; the actual key will be derived by passing the passphrase through a series of MD5 hash operations.”<br>
<br>
So, in your example Key is not an encryption key, this is a pass-phrase. The Erlang’s implementation expects that you provides actual key.<br>
<br>
I do not know how perl’s Crypt::CBC derives the key from perspires. You can either reverse engineer that piece of code or you can use literal key.<br>
<br>
<br>
Best Regards,<br>
Dmitry<br>
<div class="HOEnZb"><div class="h5"><br>
<br>
> On Nov 10, 2015, at 11:58 AM, Bogdan Andu <<a href="mailto:bog495@gmail.com">bog495@gmail.com</a>> wrote:<br>
><br>
> use strict;<br>
> use warnings;<br>
> use MIME::Base64;<br>
><br>
> use Crypt::CBC;<br>
> #use Digest::HMAC_SHA1 qw(hmac_sha1 hmac_sha1_hex);<br>
> use PHP::Serialization qw(serialize unserialize);<br>
><br>
> my $pt = 'a:10:{s:6:"adresa";s:89:"Address 2 TEST \xc3\x84\xc2\x83\xc3\x83\xc2\xae\xc3\x88\xc2\x99\xc3\x88\xc2\x9b\xc3\x88\xc2\x99\xc3\x88\xc2\x9bbl 7bap 71district XXXBucure\xc3\x88\xc2\x99tiJUDE\xc3\x88\xc2\x9a031905RO";s:4:"info";i:1460382;s:7:"urlback";s:41:"<a href="https://192.162.16.116:8020/snep_response" rel="noreferrer" target="_blank">https://192.162.16.116:8020/snep_response</a>";s:4:"cuip";s:18:"Cererea nr 1460382";s:6:"idtaxa";i:5001;s:5:"email";s:16:"<a href="mailto:xxx123@gmail.com">xxx123@gmail.com</a>";s:4:"nume";s:55:"\xc3\x88\xc2\x99 \xc3\x88\xc2\x9b \xc3\x84\xc2\x83 \xc3\x83\xc2\xae \xc3\x83\xc2\xa2 \xc3\x83\xc2\x82 \xc3\x83\xc2\x8e \xc3\x84\xc2\x82 \xc3\x88\xc2\x98 \xc3\x88\xc2\x9a u\xc3\x83\xc2\xa7";s:3:"cui";s:18:"Cererea nr 1460382";s:9:"idnomunic";i:13;s:4:"suma";d:262.69;}';<br>
><br>
> print $pt, "\n";<br>
><br>
> my $key = "12345678900987654321001234567890";<br>
> my $cipher = Crypt::CBC->new(<br>
>                    -key    => $key,<br>
>                 -cipher => 'Blowfish',<br>
>                 -header => 'randomiv'<br>
> );<br>
><br>
>         #       print "$pt\n";<br>
> my $encpt = $cipher->encrypt($pt);<br>
> print "\n$encpt", "\n";<br>
><br>
> print "\n", encode_base64($encpt), "\n";<br>
><br>
> ## TEST<br>
> my $decpt = $cipher->decrypt($encpt);<br>
> print "\n$decpt", "\n";<br>
<br>
</div></div></blockquote></div><br></div>