|
Posted by Colin McKinnon on 09/19/05 14:28
Benoît wrote:
> Hi,
> I have generated two keys :
> "C:>openssl req -nodes -new -x509 -keyout ben.key -out ben.crt -days
> 3650"
> I try to encrypt/decrypt a string like "JOHN" with these asymetrics
> keys. With the following code, it works.
> I encrypt with the public key which is in the certificate.
> I decrypt with the private key.
> But why, the crypted message is different every time I start the
> programm...?
Sounds like a good thing, particularly with short strings - the system is
applying some reversible modification of the data before encoding to
specifically avoid repetition, e.g. instead of:
$encrypted=encrypt($data, $private_key);
the system is might be doing something like:
$modifier=rand(0,10000) . time();
$data=base64_encode($data) . ":" . base64_encode($modifier);
$encrypted=encrypt($data);
(actually even I could come up with something better if I spent some time
thinking about it - no doubt the openssl people did already).
....so the data is always recoverable but the encrypted message contains
random junk which is discarded.
>
> Now here is my second question :
> In fact I encrypt with a java programm where is my certificate and I
> decrypt with a PHP programm like I've just explane before.
>
<snip>
In addition to the reason cited above, openSSL may do all sorts of strange
things to package up the encrypted data.
I would suggest that you start by meking sure you can implement compatable
encryption frm the command line using openSSL.exe (which I suspect will be
straightforward), then try to reproduce the behaviour in Java (I'm sure the
Java newsgroups can better advise you on your Java code).
HTH
C.
[Back to original message]
|