CryptoJs+;使用Javascript使用CBC模式进行三重加密和解密

CryptoJs+;使用Javascript使用CBC模式进行三重加密和解密,javascript,cryptojs,tripledes,cbc-mode,Javascript,Cryptojs,Tripledes,Cbc Mode,我试图用CBC模式通过三重DES算法对给定的纯文本进行加密,但无法获得我下面给出的所需密码文本 我需要使用Javascript通过CryptoJs进行加密和解密,但无法做到这一点 纯文本:“AN=1234567890;EA=test@mycompany.com;TS=2009-06-03 17:04:39“ 所需密码文本:“LK0Y/C2GWAfVguTEwFBIzlLBKsp4v61yHCUTj0iKtxcG60Hzprx/zlCofYHsjYWnJt78ao9l6cA7TE fIl+u0QA

我试图用CBC模式通过三重DES算法对给定的纯文本进行加密,但无法获得我下面给出的所需密码文本

我需要使用Javascript通过CryptoJs进行加密和解密,但无法做到这一点

纯文本:“AN=1234567890;EA=test@mycompany.com;TS=2009-06-03 17:04:39“ 所需密码文本:“LK0Y/C2GWAfVguTEwFBIzlLBKsp4v61yHCUTj0iKtxcG60Hzprx/zlCofYHsjYWnJt78ao9l6cA7TE fIl+u0QA==”

Key=“1234567890ABCDEFGHIJKLMN”

IV=“12345678”

模式:“CBC”

算法:“三元组”

Javascript代码:

<!DOCTYPE html>
<html>
<head>
<title>Testing Encryption & Decryption</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="http://cdn.bootcss.com/crypto-js/3.1.2/components/core.js"> 
</script>
<script src="http://cdn.bootcss.com/crypto-js/3.1.2/components/enc-base64.js"></script>
<script src="https://cdn.bootcss.com/crypto-js/3.1.2/rollups/tripledes.js"> 
</script>
<script src="https://cdn.bootcss.com/crypto-js/3.1.2/components/mode-ecb.js"></script>
<script src="https://cdn.bootcss.com/crypto-js/3.1.2/components/pad-nopadding.js"></script>
<script type="text/javascript">
var key = 'E821752166E916AEEF940855';
//CBC Mode encryption 
function encryptByDESModeCBC(message) {
var keyHex = CryptoJS.enc.Utf8.parse(key);
var ivHex = 'E8217521';//CryptoJS.enc.Utf8.parse(key);
console.log(ivHex);
encrypted = CryptoJS.DES.encrypt(message, keyHex, {
iv:ivHex,
mode: CryptoJS.mode.CBC
}
);
return encrypted.ciphertext.toString(); 
//CBC Schema decryption 
function decryptByDESModeCBC(ciphertext2) {
var keyHex = CryptoJS.enc.Utf8.parse(key);
var ivHex = CryptoJS.enc.Utf8.parse(key);
// direct decrypt ciphertext
var decrypted = CryptoJS.DES.decrypt({
ciphertext: CryptoJS.enc.Hex.parse(ciphertext2)
}, keyHex, {
iv:ivHex,
mode: CryptoJS.mode.CBC
});
return decrypted.toString(CryptoJS.enc.Utf8);
}
function test(){
 var source = $("#source").val();
 var cc = encryptByDESModeCBC(CryptoJS.enc.Utf8.parse(source));
 $("#target").val(cc);
}
function test1(){
var source = $("#sourceS").val();
var dd = decryptByDESModeCBC(source);
$("#jiemi").val(dd);
}
</script>
</head>
<body>
  <div>
    Before encryption :<textarea id="source" value="" 
     style="width:500px;height:90px;" /></textarea>
   <hr>
  After encryption :<textarea id="target" value="" 
  style="width:500px;height:90px;" ></textarea>
  <hr>
  <input type="button" onclick="test();" name="" value=" encryption " />
  <hr>
  ciphertext :<textarea id="sourceS" value="" width="400px" 
  style="width:500px;height:90px;" ></textarea>
  <hr>
  After decryption :<textarea id="jiemi" value="" 
  style="width:500px;height:90px;" ></textarea>
  <hr>
  <input type="button" onclick="test1();" name="" value=" Decrypt "/>
  </div>
  </body>
  </html>

测试加密和解密
变量键='E821752166E916AEEF940855';
//CBC模式加密
函数encryptByDESModeCBC(消息){
var keyHex=CryptoJS.enc.Utf8.parse(key);
var ivHex='E8217521';//CryptoJS.enc.Utf8.parse(key);
控制台日志(ivHex);
加密=CryptoJS.DES.encrypt(消息,keyHex{
iv:ivHex,
模式:CryptoJS.mode.CBC
}
);
返回加密的.ciphertext.toString();
//CBC模式解密
函数decryptByDESModeCBC(密文2){
var keyHex=CryptoJS.enc.Utf8.parse(key);
var ivHex=CryptoJS.enc.Utf8.parse(key);
//直接解密密文
var decrypted=CryptoJS.DES.decrypt({
密文:CryptoJS.enc.Hex.parse(ciphertext2)
},keyHex{
iv:ivHex,
模式:CryptoJS.mode.CBC
});
返回解密的.toString(CryptoJS.enc.Utf8);
}
功能测试(){
var source=$(“#source”).val();
var cc=encryptByDESModeCBC(CryptoJS.enc.Utf8.parse(source));
美元(“#目标”).val(cc);
}
函数test1(){
var source=$(“#sourceS”).val();
var dd=decryptByDESModeCBC(源);
美元("解米").val(dd);;
}
加密前:

加密后:

密文:
解密后:
您可以试试这个

<!DOCTYPE html>
<html>
<head>
<title>Testing Encryption & Decryption</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="http://cdn.bootcss.com/crypto-js/3.1.2/components/core.js"> 
</script>
<script src="http://cdn.bootcss.com/crypto-js/3.1.2/components/enc-base64.js"></script>
<script src="https://cdn.bootcss.com/crypto-js/3.1.2/rollups/tripledes.js"> 
</script>
<script src="https://cdn.bootcss.com/crypto-js/3.1.2/components/mode-ecb.js"></script>
<script src="https://cdn.bootcss.com/crypto-js/3.1.2/components/pad-nopadding.js"></script>

</head>
<body>
  <div>
    Before encryption :<textarea id="source" value="" 
     style="width:500px;height:90px;" /></textarea>
   <hr>
  After encryption :<textarea id="target" value="" 
  style="width:500px;height:90px;" ></textarea>
  <hr>
  <!-- <input type="button" onclick="test();" name="" value=" encryption " />
   -->
  <input type="button" id="js-encypt" name="" value=" encryption " />
  <hr>
  ciphertext :<textarea id="sourceS" value="" width="400px" 
  style="width:500px;height:90px;" ></textarea>
  <hr>
  After decryption :<textarea id="jiemi" value="" 
  style="width:500px;height:90px;" ></textarea>
  <hr>
   <input type="button" id="js-decrypt" name="" value=" Decrypt "/>
<!--   <input type="button" onclick="test1();" name="" value=" Decrypt "/>
 -->  </div>
  </body>
  <script type="text/javascript">
var key = 'E821752166E916AEEF940855';
//CBC Mode encryption 

function encryptByDESModeCBC(message) {
    var ivHex = 'E8217521';//CryptoJS.enc.Utf8.parse(key);
    console.log(ivHex);
    var keyHex = CryptoJS.enc.Utf8.parse(key);
    var encrypted = CryptoJS.DES.encrypt(message, keyHex, {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
    });
    console.log(encrypted.toString());
    return encrypted.toString();

}


function decryptByDESModeCBC(ciphertext) {
    var keyHex = CryptoJS.enc.Utf8.parse(key);
    // direct decrypt ciphertext
    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);
}



$(document).on('click','#js-encypt',function(){
   var source = $("#source").val();
   var cc = encryptByDESModeCBC(CryptoJS.enc.Utf8.parse(source));
   $("#target").val(cc);
});

$(document).on('click','#js-decrypt',function(){
 var source = $("#sourceS").val();
 var dd = decryptByDESModeCBC(source);
 $("#jiemi").val(dd);
})

</script>
  </html>

测试加密和解密
加密前:

加密后:

密文:
解密后:
变量键='E821752166E916AEEF940855'; //CBC模式加密 函数encryptByDESModeCBC(消息){ var ivHex='E8217521';//CryptoJS.enc.Utf8.parse(key); 控制台日志(ivHex); var keyHex=CryptoJS.enc.Utf8.parse(key); var encrypted=CryptoJS.DES.encrypt(消息,keyHex{ 模式:CryptoJS.mode.ECB, 填充:CryptoJS.pad.Pkcs7 }); console.log(加密的.toString()); 返回加密的.toString(); } 函数decryptByDESModeCBC(密文){ var keyHex=CryptoJS.enc.Utf8.parse(key); //直接解密密文 var decrypted=CryptoJS.DES.decrypt({ 密文:CryptoJS.enc.Base64.parse(密文) },keyHex{ 模式:CryptoJS.mode.ECB, 填充:CryptoJS.pad.Pkcs7 }); 返回解密的.toString(CryptoJS.enc.Utf8); } $(文档).on('click','js encypt',function(){ var source=$(“#source”).val(); var cc=encryptByDESModeCBC(CryptoJS.enc.Utf8.parse(source)); 美元(“#目标”).val(cc); }); $(document).on('click','js decrypt',function(){ var source=$(“#sourceS”).val(); var dd=decryptByDESModeCBC(源); 美元("解米").val(dd);; })
您可以试试这个

<!DOCTYPE html>
<html>
<head>
<title>Testing Encryption & Decryption</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="http://cdn.bootcss.com/crypto-js/3.1.2/components/core.js"> 
</script>
<script src="http://cdn.bootcss.com/crypto-js/3.1.2/components/enc-base64.js"></script>
<script src="https://cdn.bootcss.com/crypto-js/3.1.2/rollups/tripledes.js"> 
</script>
<script src="https://cdn.bootcss.com/crypto-js/3.1.2/components/mode-ecb.js"></script>
<script src="https://cdn.bootcss.com/crypto-js/3.1.2/components/pad-nopadding.js"></script>

</head>
<body>
  <div>
    Before encryption :<textarea id="source" value="" 
     style="width:500px;height:90px;" /></textarea>
   <hr>
  After encryption :<textarea id="target" value="" 
  style="width:500px;height:90px;" ></textarea>
  <hr>
  <!-- <input type="button" onclick="test();" name="" value=" encryption " />
   -->
  <input type="button" id="js-encypt" name="" value=" encryption " />
  <hr>
  ciphertext :<textarea id="sourceS" value="" width="400px" 
  style="width:500px;height:90px;" ></textarea>
  <hr>
  After decryption :<textarea id="jiemi" value="" 
  style="width:500px;height:90px;" ></textarea>
  <hr>
   <input type="button" id="js-decrypt" name="" value=" Decrypt "/>
<!--   <input type="button" onclick="test1();" name="" value=" Decrypt "/>
 -->  </div>
  </body>
  <script type="text/javascript">
var key = 'E821752166E916AEEF940855';
//CBC Mode encryption 

function encryptByDESModeCBC(message) {
    var ivHex = 'E8217521';//CryptoJS.enc.Utf8.parse(key);
    console.log(ivHex);
    var keyHex = CryptoJS.enc.Utf8.parse(key);
    var encrypted = CryptoJS.DES.encrypt(message, keyHex, {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
    });
    console.log(encrypted.toString());
    return encrypted.toString();

}


function decryptByDESModeCBC(ciphertext) {
    var keyHex = CryptoJS.enc.Utf8.parse(key);
    // direct decrypt ciphertext
    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);
}



$(document).on('click','#js-encypt',function(){
   var source = $("#source").val();
   var cc = encryptByDESModeCBC(CryptoJS.enc.Utf8.parse(source));
   $("#target").val(cc);
});

$(document).on('click','#js-decrypt',function(){
 var source = $("#sourceS").val();
 var dd = decryptByDESModeCBC(source);
 $("#jiemi").val(dd);
})

</script>
  </html>

测试加密和解密
加密前:

加密后:

密文:
解密后:
变量键='E821752166E916AEEF940855'; //CBC模式加密 函数encryptByDESModeCBC(消息){ var ivHex='E8217521';//CryptoJS.enc.Utf8.parse(key); 控制台日志(ivHex); var keyHex=CryptoJS.enc.Utf8.parse(key); var encrypted=CryptoJS.DES.encrypt(消息,keyHex{ 模式:CryptoJS.mode.ECB, 填充:CryptoJS.pad.Pkcs7 }); console.log(加密的.toString()); 返回加密的.toString(); } 函数decryptByDESModeCBC(密文){ var keyHex=CryptoJS.enc.Utf8.parse(key); //直接解密密文 var decrypted=CryptoJS.DES.decrypt({ 密文:CryptoJS.enc.Base64.parse(密文) },keyHex{ 模式:CryptoJS.mode.ECB, 填充:CryptoJS.pad.Pkcs7 }); 返回解密的.toString(CryptoJS.enc.Utf8); } $(文档).on('click','js encypt',function(){ var source=$(“#source”).val(); var cc=encryptByDESModeCBC(CryptoJS.enc.Utf8.parse(source)); 美元(“#目标”).val(cc); }); $(document).on('click','js decrypt',function(){ var source=$(“#sourceS”).val(); var dd=decryptByDESModeCBC(源); 美元("解米").val(dd);; })
只需使用CryptoJS的TripleDes方法(
CryptoJS.TripleDes.encrypt
)进行加密。应该可以完成这项工作。这与您在问题中提到的内容相匹配

确保解析为UTF-8

let data=“AN=1234567890;EA=test@mycompany.com;TS=2009-06-03 17:04:39“
let key=“1234567890ABCDEFGHIJKLMN”
设IV=“12345678”
让cipher=CryptoJS.TripleDES.encrypt(数据,CryptoJS.enc.Utf8.parse(密钥){
iv:CryptoJS.enc.Utf8.parse(iv),
模式:CryptoJS.mode.CBC
});
console.log(cipher.toString())

只需使用CryptoJS的TripleDes方法(
CryptoJS.TripleDes.encrypt
)即可进行加密。应该可以完成这项工作。这与您在问题中提到的内容相匹配

确保解析为UTF-8

let data=“AN=1234567890;EA=test@mycompany.com;TS=2009-06-03 17:04:39“
let key=“1234567890ABCDEFGHIJKLMN”
设IV=“12345678”
让cipher=CryptoJS.TripleDES.encrypt(数据,CryptoJS.enc.Utf8.parse(密钥){
iv:CryptoJS.enc.Utf8.parse(iv),
模式:CryptoJS.mode.CBC
});
console.log(cipher.toString())

我需要使用CBC模式进行三重加密和解密。如果我通过了纯文本:EA=divya。goel@fleetpride.com;联合国=dguat@epdc.ecomAN=71508-1;PB=N;EN=Y;EC=Y;TS=2018-04-02 23:58:07密钥:E821752166E916AEEF940855您可以使用此在线工具作为参考。我需要此密码文本:oN89VgpmH+sCTdyihgBK