CryptoJs不能解密我的NodeJS服务器上的URL
我从我的前端到我的后端转发API调用。 我使用密码“somekey”使用CryptoJS.AESencryptionAPI调用。
我的相关客户代码是…
var host = 'http://localhost:3000' $('.send-button').click(function(){ var request = $('.request-input').val(); var encryptedRequest = CryptoJS.AES.encrypt(request, 'somekey'); console.log(encryptedRequest.toString()) var decryptedRequest = CryptoJS.AES.decrypt(encryptedRequest, 'somekey'); console.log('Decrypted Request: ' + decryptedRequest.toString()); handleRequest(encryptedRequest.toString()); }); var handleRequest = function(request){ $.ajax({ type: "GET", url: host + '/requests?call=' + request, success: function(data) { var rawJSON = JSON.stringify(data, null, 2); editor.setValue(rawJSON); }, dataType: 'json' }); }
相关的服务器端代码是…
var port = 3000; var serverUrl = "127.0.0.1"; var http = require("http"); var path = require("path"); var fs = require("fs"); var express = require("express"); var CryptoJs = require("crypto-js"); var app = express(); app.get('/requests', function(req, res) { console.log('REQUEST: ' + req); var call = req.query.call; console.log(call) console.log("To send: " + CryptoJs.AES.decrypt(call, 'somekey')); });
我一直得到的问题是,当我解密它,要么没有得到原来的url,而是返回一堆乱码。 一个例子是…
Encryption: U2FsdGVkX1/NRbZkyP60pPu3Cb9IcQ4b9n4zJkExp2LNR3O1EdEpqHLNACnYuatN Decryption: 68747470733a2f2f6e6577736170692e6f72672f76312f61727469636c6573
或…它只是没有返回,并显示为空白。
理想情况下,我想这样的事情。
Encryption: U2FsdGVkX1/NRbZkyP60pPu3Cb9IcQ4b9n4zJkExp2LNR3O1EdEpqHLNACnYuatN Decryption: https://newsapi.org/v1/articles
任何人都可以看到我是东错了吗?
这是一个工作jsfiddle: https ://jsfiddle.net/5Lr6z4zp/1/
encryption结果是Base64string,而解密的string是Hex。 要取回“消息”,你需要将其转换为Utf8:decryptedRequest.toString(CryptoJS.enc.Utf8)
以下是可用的代码的相关部分:
var request = "testing decryption"; var encryptedRequest = CryptoJS.AES.encrypt(request, 'somekey'); console.log(encryptedRequest) var decryptedRequest = CryptoJS.AES.decrypt(encryptedRequest, 'somekey'); var decryptedMessage = decryptedRequest.toString(CryptoJS.enc.Utf8) console.log('Decrypted Request: ' + decryptedMessage);
下面是一个解释encryption/解密的资源链接: http : //www.davidebarranca.com/2012/10/crypto-js-tutorial-cryptography-for-dummies/
- Javascriptencryption库不能encryption和解密一个简单的例子程序中的string
- AES CryptoJSencryption和phpseclib解密
- 在Meteor中正确启用filepicker.io的安全性
- Crypto JS:TripleDES不能正确encryption
- nodejsencryption模块与crypto-js
- 用CryptoJS解密openssl AES
- 由于crypto.DEFAULT_ENCODING ='binary',节点6升级导致aws-sdk的SignatureDoesNotMatch错误。
- 节点密码和encryption-jsencryption和解密之间的兼容性
- 无法使用密钥对validationNode.js Crypto的签名