我正在使用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值而不是根据该值的消息。
但它没有做的是将任何加密的消息转换为纯文本。
我很困惑为什么它无法解密加密的邮件。
请有人帮助我。