html 我试图在javascript中加密一个字符串,但是它返回了不同的字符串

8qgya5xd  于 2023-02-02  发布在  Java
关注(0)|答案(1)|浏览(150)

我试图创建一个脚本,加密字符串,这里是我的代码:

<!DOCTYPE html>
<html lang="nl">
    <head>
        <link rel="stylesheet" type="text/css" href="/denoryplay3/css/style.css">
        <title>Encryption</title>
    </head>
    <body>
        
        <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js" integrity="sha256-/H4YS+7aYb9kJ5OKhFYPUjSJdrtV6AeyJOtTkw6X72o=" crossorigin="anonymous"></script>

        <script>
        
        function encrypt(data, key){
            return CryptoJS.AES.encrypt(data, key);
        }
        function decrypt(data, key){
            
            return CryptoJS.AES.decrypt(data, key);
        }



        </script>
    </body>
</html>

我试着运行这个代码:

alert(decrypt(encrypt("hi", "12345"), '12345'));

,如果你能理解的话;)但是返回6869,我不明白为什么,有人能帮我吗?谢谢!
我期望它输出类似于

U2FsdGVkX1++p462vXg3LggRE5kzRtX3VbKkcMBWuHY=

但没有成功。

vecaoik1

vecaoik11#

错误出现在解密的方式中。请参阅下面的解决方案。

function encrypt(data, key){
  return CryptoJS.AES.encrypt(data, key);
}
function decrypt(data, key){

  return CryptoJS.AES.decrypt(data, key);
}

var txt = "hi";
var key = "12345";

var encrypted = encrypt(txt,key).toString();
var decrypted = decrypt(encrypted,key).toString(CryptoJS.enc.Utf8);

console.log(encrypted,decrypted);
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js" integrity="sha256-/H4YS+7aYb9kJ5OKhFYPUjSJdrtV6AeyJOtTkw6X72o=" crossorigin="anonymous"></script>

解密需要将CryptoJS.enc.Utf8参数传递给.toString(),以便指定解密文本的 * encoding *(在我们的示例中是UTF8)。

相关问题