jkiss / crypto-js

提供多种加密算法,MD5 哈希的 JS版本 -- Automatically exported from code.google.com/p/crypto-js
15 stars 9 forks source link

Cannot read property 'words' of undefined #41

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
1. Reference 
http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/sha1.js
2. Call CryptoJS.SHA1("Message")

Expected output is a hashed string. Actual output is a JS engine error message: 
"Cannot read property 'words' of undefined"

Chrome 19.0.1084.56 m on Windows 7.

Original issue reported on code.google.com by pasc...@gmail.com on 21 Jun 2012 at 8:06

GoogleCodeExporter commented 9 years ago
Hi, pascalh. I can't reproduce this issue. Could you attach a full working page 
where the issue occurs?

Original comment by Jeff.Mott.OR on 21 Jun 2012 at 9:17

GoogleCodeExporter commented 9 years ago
Hi,

I've attached minimal HTML + Javascript below. It seems to only happen in 
conjunction with jQuery's XmlHttpRequest function.

Download the files, put the *.js files in a js/ subdirectory, then load the 
page in a browser and open a JS console so you can see the error messages. 
Press the "Test" button. I get "Uncaught TypeError: Cannot read property 
'words' of undefined" on cryptojs-sha1.js:8 and the browser performs a form 
submission - why I don't know, since the submit event handler returns false.

Pascal

Original comment by pasc...@gmail.com on 22 Jun 2012 at 9:03

Attachments:

GoogleCodeExporter commented 9 years ago
Ahh, it's because the hash you get back is an object (see 
[http://code.google.com/p/crypto-js/#The_Hasher_Output The Hasher Output]). And 
when you pass an object to jQuery's data property, then jQuery tries to convert 
it to a query string.

You'll need to make sure the hash has been serialized to a string. For example:

{ key: CryptoJS.SHA1("Message") + '' }

- or -

{ key: CryptoJS.SHA1("Message").toString() }

Original comment by Jeff.Mott.OR on 22 Jun 2012 at 3:25

GoogleCodeExporter commented 9 years ago
Ahh, sorry, should have read the docs more carefully! I just assumed it was a 
string because, well, that's what the alert displays :-)

Thanks

Pascal

Original comment by pasc...@gmail.com on 22 Jun 2012 at 3:51

GoogleCodeExporter commented 9 years ago

Original comment by Jeff.Mott.OR on 25 Jun 2012 at 9:42