【问题标题】:Javascript : CryptoJS object missing SHA1 methodJavascript:CryptoJS 对象缺少 SHA1 方法
【发布时间】:2017-08-11 20:11:46
【问题描述】:

这应该很容易解决....

我的 CryptoJS 对象存在,但它没有 SHA1 方法。

我必须做些什么才能完成这项工作?那里有很多样品。我的当然不行……

.enc.Hex.stringify 方法确实存在...

任何帮助表示赞赏。

<!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        link href="blaw blaw blaw" rel="stylesheet" >
    </head>
    <body>
        content blaw blaw blaw

       <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
       <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
       <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/core.js"></script>
       <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/enc-hex.js"></script>
       <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/hmac-sha1.js"></script>

       <script type="text/javascript">

           var StringToSign = "blaw blaw blaw";
           var hash = CryptoJS.SHA1(StringToSign); // <--- No SHA1 method!

           var result = CryptoJS.enc.Hex.stringify(hash);
           $(".content .z-value").html(result);
        </script>

谢谢

【问题讨论】:

  • SHA1 已经不安全。使用 SHA2 或 SHA3。
  • 真的吗?请考虑我必须使用 SHA1。您的评论没有帮助

标签: javascript sha1 cryptojs


【解决方案1】:

您必须在加载 hmac-sha1.js 之前包含 sha1.js,因为它不会自动加载它(至少不会在浏览器中)。 hmac.js 也是如此。此外,enc-hex.js 已经包含在 core.js 中。

示例代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body>
   <div class="content"></div>

   <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
   <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
   <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/core.js"></script>
   <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/hmac.js"></script>
   <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/sha1.js"></script>

   <script type="text/javascript">

       var StringToSign = "blaw blaw blaw";
       var hash = CryptoJS.SHA1(StringToSign);

       var result = CryptoJS.enc.Hex.stringify(hash);
       $(".content").html(result);
    </script>
  </body>
</html>

【讨论】:

  • 做到了。我复制的小提琴中的 sn-p 使用了旧版本的脚本,它只需要指向 hmac-sha1.js 和 hex.js 的脚本链接......很好,谢谢!
  • 顺便说一句,如果你想使用 HMAC-SHA1,我刚刚修复了排序。
  • 让我感到沮丧的是,我不得不使用已被正式弃用的旧安全技术。你与那些声称他们是安全的并且在他们所做的事情上做得最好的公司合作......然后你开始使用他们的 API 并发现他们还没有升级到被认为是安全的通用级别...... grrr跨度>
  • Artjom B - 是的,我今天早上复制了这个版本 - 直到现在才有机会
  • “官方”是在世界任何地方使用的东西的强词。是的,SHA-1 对于许多用例来说不再安全了。你的情况是否属实,我不知道。看看Cryptography 看看是不是这样。
猜你喜欢
  • 1970-01-01
  • 2020-06-08
  • 2020-03-24
  • 2022-01-14
  • 1970-01-01
  • 2022-10-30
  • 2018-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多