我必须点击一个URL并获取其加密数据响应并使用该加密数据使用密钥解密数据。
我使用POSTMAN来获取数据响应但是当我查看它时只是一些符号而不是数据响应。所以,它是加密的。
我已经有一个将加密的响应转换回纯文本的功能但现在,我不明白如何将该数据响应转换为纯文本,因为我必须首先得到该数据响应,然后才使用该数据响应在一个decrypto函数的参数中,在键的帮助下,我可以将它改回纯文本。
我知道如何将密文更改为pln文本,但这里的情况略有不同。
但是因为我必须得到数据回复,所以我不应该发出POST请求来获取它,或者我理解它是错误的。
这是我的解密功能 -
var highScore: Int = NSUserDefaults.standardUserDefaults().integerForKey("highScore")
这时我称之为
function decryptByDES(cipherTextString, keyString) {
var keyHex = CryptoJS.enc.Utf8.parse(keyString);
var decrypted = CryptoJS.DES.decrypt({
ciphertext: CryptoJS.enc.Base64.parse(cipherTextString)
}, keyHex, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
alert(decrypted);
return decrypted.toString(CryptoJS.enc.Utf8);
}
我提供或指定密文字符串和密钥字符串,因为我只使用它来测试没有安全问题。它在alert-box中给出解密值。
所以,总而言之,我想知道如何获取加密数据响应并在函数中使用它,所以读取它就像纯文本一样。
编辑:
在POSTMAN的帮助下,我为Javascript Ajax调用生成了代码
<button onclick="decryptByDES('aHJHDJSHJhjsak=', 'ALSOWURNsa');">View</button>
那么,现在我如何在我的函数中调用这个响应?
答案 0 :(得分:0)
你必须在ajax完成后调用decryptByDES
。
function callServer(){
var settings = {
"async": true,
"crossDomain": true,
"url": "http://192.168.168.76:8080/HTMLPortingNewService/GetData?ChartName=widget3LineChart&lob=M&carrier=0&enrollmenttype=0&state=0&agent=0&fromdate=04%2F03%2F2015&todate=05%2F03%2F2015&requestID=499F6BF5E4610454A887AB37AF0814E8",
"method": "POST",
"headers": {
"cache-control": "no-cache",
"postman-token": "ac20a050-a8c8-6d58-4350-66141d519394",
"content-type": "application/x-www-form-urlencoded"
},
"data": {
"username": "aHRtbHVzZXIx",
"password": "SHRtbDIwMTY="
}
}
$.ajax(settings).done(function (response) {
console.log(response);
decrypted = decryptByDES(response, keyString);
console.log(decrypted);
});
}
在HTML中调用此函数:
<button onclick="callServer();">View</button>