Crypto-JS DES加密解密出現的錯誤


 這幾天公司給了一個項目,說爲了用戶安全性,須要加密,我在網上找了一些加密,發現Crypto-JS 挺好的用的 我就用了Crypto-JS DES加密,期間出現一些錯誤,發現這些錯誤都在我引入的Crypto-JS文件裏面,剛開始覺得文件引入錯誤,從新引入了幾遍仍是不行,都會出現錯。
 不說了上代碼,代碼我也是借鑑的網上的,大部分都相同。
須要Crypto-JS引入文件的網上也有不少,能夠去找一下。javascript

```javascript
<body>
<div>
加密前:<textarea id="source" value="" style="width:500px;height:90px;" /></textarea>
<hr>
加密後:<textarea id="target" value="" style="width:500px;height:90px;" ></textarea>
<hr>
<input type="button" onclick="test();" name="" value="加密" />
<hr>
密文:<textarea id="sourceS" value="" width="400px" style="width:500px;height:90px;" ></textarea>
<hr>
解密後:<textarea id="jiemi" value="" style="width:500px;height:90px;" ></textarea>
<hr>
<input type="button" onclick="test1();" onclick="text2()" name="" value="解密"/>
 </div>
</body>
   <script type="text/javascript">
    var key = 'BOTWAVEE';
    //CBC模式加密
    function encryptByDESModeCBC(message) {
    var keyHex = CryptoJS.enc.Utf8.parse(key);
        var ivHex = CryptoJS.enc.Utf8.parse(key);
        encrypted = CryptoJS.DES.encrypt(message, keyHex, {
    iv:ivHex,
    mode: CryptoJS.mode.CBC,
    padding:CryptoJS.pad.Pkcs7
    }
        );
    return encrypted.ciphertext.toString();
    }
    //CBC模式解密
    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,
    padding: CryptoJS.pad.Pkcs7
    });
    return decrypted.toString(CryptoJS.enc.Utf8);
    }
    //DES ECB模式加密
    function encryptByDESModeEBC(message){
    var keyHex = CryptoJS.enc.Utf8.parse(key);
    var encrypted = CryptoJS.DES.encrypt(message, keyHex, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
    });
    return encrypted.ciphertext.toString();
    }
    //DES ECB模式解密
    function decryptByDESModeEBC(ciphertext){
    var keyHex = CryptoJS.enc.Utf8.parse(key);
    var decrypted = CryptoJS.DES.decrypt({
    ciphertext: CryptoJS.enc.Hex.parse(ciphertext)
    }, keyHex, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
    });
    var result_value = decrypted.toString(CryptoJS.enc.Utf8);
    return result_value;
    }
    function test(){
    var source = $("#source").val();
    var cc = encryptByDESModeEBC(CryptoJS.enc.Utf8.parse(source));
    $("#target").val(cc);
    }
    
    function test1(){
    var source = $("#sourceS").val();
    var dd = decryptByDESModeEBC(source);
    $("#jiemi").val(dd);
    }
    </script>

```

 接下來要引入DES的文件,
 java

```javascript
<script type="text/javascript" src="js/tripledes.js" ></script>
<script type="text/javascript" src="js/mode-ecb.js" ></script>
```

除了要引入這倆個文件外,還要引入jq文件,固然,若是你代碼裏面沒有用到jq就不用引發jq文件了。
而後你運行會這個錯誤

沒有引入Crypto-JS文件,明明已經引入了,網上找了一些,發現還要引入一個整體的文件,就是這個安全

 

<script type="text/javascript" src="js/core.js" ></script>


這個總能夠吧,結果發現還有錯誤,

未定義爲 ‘extend’  但是代碼裏面也沒有這個,最後發現還少一個引入文件加密

 

<script type="text/javascript" src="js/cipher-core.js" ></script>


把這個引入就能夠了,
**還有一個值的注意,引入文件時,這個文件必定要放在最上面,否則還會報錯**code

 

<script type="text/javascript" src="js/core.js" ></script>


好了,大體也就這樣,但願對你們有幫助,最後代碼結果
blog

相關文章
相關標籤/搜索