【问题标题】:How to encrypt or decrypt string in javascript如何在javascript中加密或解密字符串
【发布时间】:2018-10-31 03:23:00
【问题描述】:

我想使用下面的代码在 javascript 中加密和解密字符串。但是我得到了 crypto js 没有定义。

var encrypted = CryptoJS.AES.encrypt("Message", "Secret Passphrase");
var decrypted = CryptoJS.AES.decrypt(encrypted, "Secret Passphrase");
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js"></script>

【问题讨论】:

  • 你的javascript之前是cryptojs的脚本标签吗?
  • 你需要把它转换成tostring
  • 我将您的逻辑放在一个 sn-p 中,它似乎可以工作(尽管响应似乎是对象而不是字符串)。检查以确保您在页面中包含加密脚本您运行自己的逻辑。
  • 您没有正确处理来自方法调用的响应。请参阅本页下方 2/3 的文档的 AES 部分:github.com/brix/crypto-js

标签: javascript jquery


【解决方案1】:

对我来说很好。

JSFiddle:https://jsfiddle.net/xbk736br/

// Encrypt
var ciphertext = CryptoJS.AES.encrypt('my message', 'secret key 123');

// Decrypt
var bytes = CryptoJS.AES.decrypt(ciphertext.toString(), 'secret key 123');
var plaintext = bytes.toString(CryptoJS.enc.Utf8);

console.log(plaintext);
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js"></script>

【讨论】:

    【解决方案2】:

    如果你正在构建一个 react 或 nodejs 应用程序,你可以简单地使用这个库 ncrypt-js 来加密和解密你的数据。

    See example on codesandbox

    用法:

    es5

    var ncrypt = require('ncrypt-js'); // or var { encrypt, decrypt } = require('ncrypt-js);
    
    let encryptData = ncrypt.encrypt('super secret data', 'secret_key');
    // or
    // let encryptData = encrypt('super secret data', 'secret_key');
    
    console.log(encryptData); // 11ab949601eb136f58ac3fe846e30d76.f9ce133b20adc35eef32af95957547abbb6fbfc5cb91cd14f5b0a088bd031883963cde1a56fd62fe2aeb75451a065d21
    var decryptedData = ncrypt.decrypt(encryptData);
    // or
    // var decryptedData = decrypt(encryptData);
    
    console.log(decryptedData); // super secret data
    

    es6

    import ncrypt from 'ncrypt-js'; // or import { encrypt, decrypt } from 'ncrypt-js';
    
    const encryptData = ncrypt.encrypt('super secret data', 'secret_key');
    // or
    // const encryptData = encrypt('super secret data', 'secret_key');
    
    console.log(encryptData); // 11ab949601eb136f58ac3fe846e30d76.f9ce133b20adc35eef32af95957547abbb6fbfc5cb91cd14f5b0a088bd031883963cde1a56fd62fe2aeb75451a065d21
    const decryptedData = ncrypt.decrypt(encryptData);
    // or
    // const decryptedData = decrypt(encryptData);
    
    console.log(decryptedData); // super secret data
    

    【讨论】:

      【解决方案3】:

      encrypted.toString() 将返回正确的字符串值。

      var encrypted = CryptoJS.AES.encrypt("Message", "Secret Passphrase");
      alert(encrypted.toString());
      var decrypted = CryptoJS.AES.decrypt(encrypted, "Secret Passphrase");
      <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js"></script>

      【讨论】:

      • 加密时?实际上我没有收到任何错误。
      • 仔细检查您的代码是否正确放置在<script>标签中
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-19
      • 2011-12-22
      • 2012-07-29
      • 1970-01-01
      • 2015-02-04
      相关资源
      最近更新 更多