Closed GoogleCodeExporter closed 8 years ago
There are a couple reasons why they're coming out different. First, when you
use a string for the key, then it's treated as a passphrase from which to
derive a pseudo-random key and IV. To get the same ciphertext both times, you'd
have to supply an actual key and IV. Second, when you use CryptoJS 2 to create
a WordArray from "message", you need to tell it how many bytes are significant,
otherwise it will use all eight bytes within the two 32-bit words, rather than
just the seven bytes that is in your message. And third, the stringToBytes and
bytesToWords methods of CryptoJS 2 can be replaced by Latin1.parse of CryptoJS
3, which will also automatically handle the significant bytes issue. This
should work for you:
var key = CryptoJS.lib.WordArray.random(256/8);
var iv = CryptoJS.lib.WordArray.random(256/8);
a = CryptoJS.AES.encrypt("message", key, { 'iv': iv });
w = CryptoJS.enc.Latin1.parse("message");
b = CryptoJS.AES.encrypt(w, key, { 'iv': iv });
Also, in the future, the more appropriate spot for this question is the
discussion group.
Original comment by Jeff.Mott.OR
on 6 Sep 2012 at 4:36
Thanks for quick answer! Tho my real question was: how to encrypt byte array
same way as Java ciphers does? But as suggested I'll use discussion group for
this one.
Original comment by koszikot@gmail.com
on 6 Sep 2012 at 4:57
Original issue reported on code.google.com by
koszikot@gmail.com
on 6 Sep 2012 at 3:52