首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用CryptoJS更改密钥

使用CryptoJS更改密钥
EN

Stack Overflow用户
提问于 2016-06-10 16:14:07
回答 1查看 2.6K关注 0票数 0

我正在使用CryptoJS对文本进行加密和解密。在这里,我只是获取消息并显示加密和解密消息。

我正在使用DES算法进行加密和解密。

这是我的HTML文件

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
    <script src="tripledes.js"></script>
    <script src="mode-ecb.js"></script>
    <style type="text/css">
        .maindiv {
            /* Just to center the form on the page */
            margin: 0 auto;
            width: 400px;
            /* To see the outline of the form */
            padding: 1em;
            border: 1px solid #CCC;
            border-radius: 1em;
        }
         div + div {
                margin-top: 1em;
            }
        label {
            /* To make sure that all labels have the same size and are properly aligned */
            display: inline-block;
            width: 90px;
            text-align: right;
        }
        .button {
            /* To position the buttons to the same position of the text fields */
            padding-left: 90px; /* same size as the label elements */
        }

        button {
            /* This extra margin represent roughly the same space as the space
       between the labels and their text fields */
            margin-left: .5em;
        }
        input:focus, textarea:focus {
            /* To give a little highlight on active elements */
            border-color: #000;
        }
        input, textarea {
            /* To make sure that all text fields have the same font settings
       By default, textareas have a monospace font */
            font: 1em sans-serif;
            /* To give the same size to all text field */
            width: 300px;
            -moz-box-sizing: border-box;
            box-sizing: border-box;
            /* To harmonize the look & feel of text field border */
            border: 1px solid #999;
        }
    </style>
    <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文件

代码语言:javascript
复制
/*
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;
}());

请任何人都可以告诉我在哪里以及如何更换钥匙。

EN

回答 1

Stack Overflow用户

发布于 2016-06-10 16:21:40

根据https://code.google.com/archive/p/crypto-js/#Custom_Key_and_IV的文档,如果您希望提供自定义密钥,则需要定义并提供初始化向量(IV)和密钥:

代码语言:javascript
复制
var key = CryptoJS.enc.Hex.parse('000102030405060708090a0b0c0d0e0f'); 
var iv = CryptoJS.enc.Hex.parse('101112131415161718191a1b1c1d1e1f'); 
var encrypted = CryptoJS.AES.encrypt("Message", key, { iv: iv });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37743218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档