gpt4 book ai didi

javascript - 压缩js加密的字符串

转载 作者:行者123 更新时间:2023-11-30 06:12:33 27 4
gpt4 key购买 nike

我是14岁的业余学习JS,因此我决定必须编写自己的密码。我尝试了最简单的字符转换(将每个字母的charCode移了),但是我不喜欢显示外国字符。

因此,一段时间后,我最终以某种方式结束了该原型。起初,我对此非常满意,但是当您输入一些较长的文本时,加密形式会变得太大。有谁知道如何使输出变小?谢谢
(很抱歉可能出现语言错误,英语不是我的母语)



function encrypt(text, password){
if(!password)
return text;
var chars = text.split("");
var passes = window.btoa(password).split("");
passes.push(password.length);
var addto = 0;
var toreturn = [];
passes.forEach(function(cnt, idx){
passes[idx] = cnt.toString().charCodeAt(0) * 16;
});
chars.forEach(function(content, index){
toreturn.push((content.charCodeAt(0) + passes[index % passes.length] + addto).toString(32));
addto += ((index % passes.length) == 0) ? password.length : 0;
});
return window.btoa(toreturn.join("/"));
}
function decrypt(text, password){
if(!password)
return text;
var chars = window.atob(text).split("/");
var passes = window.btoa(password).split("");
passes.push(password.length);
var addto = 0;
var toreturn = [];
passes.forEach(function(cnt, idx){
passes[idx] = cnt.toString().charCodeAt(0) * 16;
});
chars.forEach(function(content, index){
toreturn.push(String.fromCharCode(parseInt(content, 32) - passes[index % passes.length] - addto));
addto += ((index % passes.length) == 0) ? password.length : 0;
});
return toreturn.join("");
}

var msg1 = "Hello world!"; document.getElementById("msg1").innerHTML = msg1;
var enc1 = encrypt(msg1, "myPass1"); document.getElementById("enc1").innerHTML = enc1;
var dec1 = decrypt(enc1, "myPass1"); document.getElementById("dec1").innerHTML = dec1;

var msg2 = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed vel lectus. Donec odio tempus molestie, porttitor ut, iaculis quis, sem";
document.getElementById("msg2").innerHTML = msg2;
var enc2 = encrypt(msg2, "myPass1"); document.getElementById("enc2").innerHTML = enc2;
var dec2 = decrypt(enc2, "myPass1"); document.getElementById("dec2").innerHTML = dec2;

Password: <i>myPass1</i><br><br>
<b>message: </b><span id="msg1"></span><br>
<b>encrypted: </b><span id="enc1"></span><br>
<b>decrypted: </b><span id="dec1"></span><br>
<br>
<b>message: </b><span id="msg2"></span><br>
<b>encrypted: </b><span id="enc2" style="word-wrap: break-word;white-space: -moz-pre-wrap;white-space: pre-wrap;"></span><br>
<b>decrypted: </b><span id="dec2"></span>

最佳答案

我没有花费很多时间来研究您的加密算法,但是在我看来,最终的加密输出中可能有很多冗余,缺少随机性或缺乏熵,这首先是我认为的寻找一个好的加密算法。我从您的代码片段中提取了700个字符的加密输出,并应用了Unix gzip压缩实用程序,并将其压缩到424字节的大小。所以:

在不对算法进行大修的情况下使输出变小的最简单方法是对它进行压缩。就是说,我能够非常强烈地压缩输出这一事实表明,就抵御解密攻击而言,您的算法可能不是最强大的。我确信这不是您的主要关注点,我也不打算赘述。但是,您可能仍然对讨论熵和密码学的文章感兴趣。

顺便说一句,你的英语很好。

关于javascript - 压缩js加密的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58033806/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com