大佬教程收集整理的这篇文章主要介绍了javascript – 将CryptoJS的CryptoMD5状态保存为字符串并稍后恢复,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在上传期间逐渐计算大文件的MD5哈希,然后在某些时候我想保存到HTML5 localStorage到目前为止我计算的内容,以便稍后恢复.
据我所知,localStorage可以存储字符串,因此我必须将渐进式MD5值存储为字符串,然后在用户稍后打开浏览器时将其还原.
基本上我的代码看起来像这样:
@H_675_10@var md5_full = CryptoJs.algo.MD5.create(); var wordArray = CryptoJs.lib.WordArray.create(chunk); md5_full.update(wordArray);
此时,我想将md5_full转换为字符串,以便能够保存到localStorage.然后,稍后,当用户想要恢复上传时,能够从localStorage检索md5_full,解除束缚,并继续使用块更新它.
下面的代码通过仅恢复数据而不是函数来解决此问题. JSFiddle.
(DE)序列化功能:
@H_675_10@/** serialize MD5 object. */ function Stringify_md5(md5) { return JSON.Stringify(md5); } /** Deserialize MD5 object. */ function parse_md5(serialized_md5) { var md5 = CryptoJs.algo.MD5.create(); restore_data(JSON.parse(serialized_md5),md5); return md5; } /** Recursively copy properties from object source to object target. */ function restore_data(source,target) { for (var prop in sourcE) { var value = source[prop]; if (typeof value == "object") { if (typeof target[prop] != "object") { target[prop] = {}; } restore_data(source[prop],target[prop]); } else { target[prop] = source[prop]; } } }
用法示例:
@H_675_10@var chunk1 = "abc",chunk2 = "def"; // The correct hash: var md5_full_1 = CryptoJs.algo.MD5.create(); md5_full_1.update(chunk1); md5_full_1.update(chunk2); var correct_hash = md5_full_1.finalize(); // Using Stringify/parse var md5_full_2 = CryptoJs.algo.MD5.create(); md5_full_2.update(chunk1); var md5_serialized = Stringify_md5(md5_full_2); // serialize md5_full_2 = parse_md5(md5_serialized); // deserialize md5_full_2.update(chunk2); var result_hash = md5_full_2.finalize(); alert(correct_hash.toString() == result_hash.toString()); // true
(出于某种原因,使用WordArray在CryptoJS中抛出了一个错误)
以上是大佬教程为你收集整理的javascript – 将CryptoJS的CryptoMD5状态保存为字符串并稍后恢复全部内容,希望文章能够帮你解决javascript – 将CryptoJS的CryptoMD5状态保存为字符串并稍后恢复所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。