如何使用CryptoJS-DES解密消息

时间:2016-06-13 07:02:47

标签: javascript encryption cryptography cryptojs

我正在使用CryptoJs进行加密和解密。在这里我遇到了一些问题,我已经给出了这个代码,用于将消息转换为加密但有问题将加密消息转换为解密。

也许他们使用自己的密钥但没有正确放置

https://code.google.com/archive/p/crypto-js/

请参阅自定义键和IV部分

从这里开始我知道如何更改密钥,但问题是我应该在哪里应用更改。

这是代码 -

我的HTML文件

  <!DOCTYPE html>
  <html>
  <head>
  <script src="tripledes.js"></script>
  <script src="mode-ecb.js"></script>
        <script type="text/javascript">

  function viewvalue()
  {
  var message = document.getElementById("msg").value;
  var key = document.getElementById("key").value;
  var encrypted = encryptByDES(message, key);
  document.getElementById("enctext").textContent = encrypted;
  document.getElementById("dectxt").textContent = decryptByDES(encrypted, key);;


  }

  function encryptByDES(message, key) {

  var keyHex = CryptoJS.enc.Utf8.parse(key);

  var encrypted = CryptoJS.DES.encrypt(message, keyHex, {
  mode: CryptoJS.mode.ECB,
  padding: CryptoJS.pad.Pkcs7
  });
  return encrypted.toString();
  }

  function decryptByDES(ciphertext, key) {
  var keyHex = CryptoJS.enc.Utf8.parse(key);

  var decrypted = CryptoJS.DES.decrypt({
  ciphertext: CryptoJS.enc.Base64.parse(ciphertext)
  }, keyHex, {
  mode: CryptoJS.mode.ECB,
  padding: CryptoJS.pad.Pkcs7
  });

  return decrypted.toString(CryptoJS.enc.Utf8);
  }
  </script>
  </head>
  <body>

  <div class="maindiv">
  <div>
  <label for="name">Message:</label>
  <input type="text" id="msg" name="msg" />
  </div>
  <div>
  <label for="mail">Key:</label>
  <input type="text" id="key" name="key" />
  </div>
  <div>
  <label for="msg">Encrypted Text:</label>
  <textarea id="enctext" name="enctxt"></textarea>
  </div>
  <div>
  <label for="msg">Decrypted Text:</label>
  <textarea id="dectxt" name="dectxt"></textarea>
  </div>
  <div class="button">
  <button onclick="viewvalue()">View</button>
  </div>
  </div>
  </body>
  </html>

这是.js文件

  /*
  CryptoJS v3.1.2
  code.google.com/p/crypto-js
  (c) 2009-2013 by Jeff Mott. All rights reserved.
  code.google.com/p/crypto-js/wiki/License
  */
  /**
  * Electronic Codebook block mode.
  */
  CryptoJS.mode.ECB = (function () {
  var ECB = CryptoJS.lib.BlockCipherMode.extend();

  ECB.Encryptor = ECB.extend({
  processBlock: function (words, offset) {
  this._cipher.encryptBlock(words, offset);
  }
  });

  ECB.Decryptor = ECB.extend({
  processBlock: function (words, offset) {
  this._cipher.decryptBlock(words, offset);
  }
  });

  return ECB;
  }());

他们也在使用三元组最小文件。

我被告知要更改HEX中的键值,然后在代码中对该值进行硬编码,但是在哪里对值进行硬编码,因为这就是代码所做的事情。它采用Key中给出的值并将其更改为HEX值而不是根据该值的消息。

但它没有做的是将任何加密的消息转换为纯文本。

我很困惑为什么它无法解密加密的邮件。

请有人帮助我。

0 个答案:

没有答案