CryptoJS没有方法mixIn
我在浏览器中遇到以下错误(Chrome):
Uncaught TypeError: Object [object global] has no method 'mixIn' aes.js:28 d.CipherParams.l.extend.init aes.js:28 c.hasOwnProperty.c.init sha1.js:7 e jQuery.js:7 Wc jQuery.js:7 Wc jQuery.js:7 n.param jQuery.js:7 n.extend.ajax jQuery.js:7 saveCurrentNote (index):88 selectNote (index):97 (anonymous function) (index):125 n.event.dispatch jQuery.js:6 r.handle
这是源代码:
<script type="text/javascript" src="request->baseUrl ?>/js/jQuery.js"> <script type="text/javascript" src="request->baseUrl ?>/js/cryptojs/rollups/sha1.js"> <script type="text/javascript" src="request->baseUrl ?>/js/cryptojs/rollups/aes.js"> <script type="text/javascript" src="request->baseUrl ?>/js/cryptojs/rollups/pbkdf2.js"> <script type="text/javascript" src="request->baseUrl ?>/js/cryptojs/rollups/sha3.js"> <script type="text/javascript" src="request->baseUrl ?>/js/Basic.js"> <script type="text/javascript" src="request->baseUrl ?>/js/Auth.js">
在Basic.js里面:
function encrypt(data, key) { return CryptoJS.AES.encrypt(data, key); } function decrypt(data, key) { return CryptoJS.AES.decrypt(data, key); }
以及这些function的用法:
data["name"] = encrypt(data["name"], recall("key")); data["text"] = encrypt(data["text"], recall("key"));
以下是CryptoJS库的链接: https : //code.google.com/p/crypto-js/
有什么我不做的事吗?
这是一个老问题,但我遇到了同样的问题。 问题是CryptoJS.AES.encrypt方法返回的对象不是字符串。
您需要做的就是修改加密function,如下所示:
function encrypt(data, key) { return CryptoJS.AES.encrypt(data, key).toString(); }
同样,decrypt函数也返回一个对象,以便使用字符串:
function decrypt(data, key) { return CryptoJS.AES.decrypt(data, key).toString(CryptoJS.enc.Utf8); }