异或加密算法

本文介绍了一种基于异或运算的加密方法,并提供了HTML页面的实现代码,包括加密和解密过程。用户可以在网页上输入文字进行实时加密,同时也能输入密文和密钥进行解密。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

异或加密HTML代码

注意,这篇文章自己用来备忘

加密:

<!DOCTYPE>
<html>
    <head>
        <script>
function PrefixInteger(num){
    if(num.length==1)return '0'+num;
    return num;
}
function AutoSet(word){
    var ret=new String("");
    for(var i=0;i<word.length;++i){
        if(word[i]==' ')ret+="&nbsp;";
        else if(word[i]=='<')ret+="&lt;";
        else if(word[i]=='>')ret+="&gt;";
        else if(word[i]==(39).fromCharCode)ret+="&#39;";
        else if(word[i]=='"')ret+="&quot;";
        else if(word[i]=='&')ret+="&amp;";
        else ret+=word[i];
    }
    return ret;
}
function Submit(){
    var text=document.getElementById("text").value;
    for(var i=0;i<text.length;++i)if(text.charCodeAt(i)>255){
        document.getElementById("text").value="";
        alert("请不要输入特殊字符!");
        return;
    }
    var numbers=new Array(text.length),encnum=new Array(text.length),encryption=new String(""),ciphertext=new String("");
    for(var i=0;i<text.length;++i){
        numbers[i]=text.charCodeAt(i);
        encnum[i]=Math.round(Math.random()*255);
        encryption+=PrefixInteger(encnum[i].toString(16));
        ciphertext+=PrefixInteger((numbers[i]^encnum[i]).toString(16));
    }
    document.getElementById("plaintext").innerHTML=AutoSet(text);
    document.getElementById("encryption").innerHTML=encryption;
    document.getElementById("ciphertext").innerHTML=ciphertext;
}
        </script>
        <title>自动加密</title>
    </head>
    <body>
        请输入要加密的文字:
        <br />
        <input id="text" type="text" placeholder="请输入要加密的文字" />
        <button onclick="Submit()">提交</button>
        <br />
        Plaintext: <span id="plaintext"></span>
        <br />
        Encryption: <span id="encryption"></span>
        <br />
        Ciphertext: <span id="ciphertext"></span>
    </body>
</html>

解密:

<!DOCTYPE>
<html>
    <head>
        <script>
function AutoSet(word){
    var ret=new String("");
    for(var i=0;i<word.length;++i){
        if(word[i]==' ')ret+="&nbsp;";
        else if(word[i]=='<')ret+="&lt;";
        else if(word[i]=='>')ret+="&gt;";
        else if(word[i]==(39).fromCharCode)ret+="&#39;";
        else if(word[i]=='"')ret+="&quot;";
        else if(word[i]=='&')ret+="&amp;";
        else ret+=word[i];
    }
    return ret;
}
function Name(x){
    var i=x.charCodeAt(0);
    if(i>47&&i<58)return i-48;
    if(i>64&&i<71)return i-55;
    if(i>96&&i<103)return i-87;
    alert("不合法的密文!");
    document.getElementById("text").value="";
    document.getElementById("password").value="";
}
function Solve(){
    var text=document.getElementById("text").value,password=document.getElementById("password").value;
    if(text.length%2==1||password.length%2==1||text.length!=password.length){
        document.getElementById("text").value="";
        document.getElementById("password").value="";
        alert("不合法的密文!");
        return;
    }
    var a=0,b=0,ans=new String();
    for(var i=0;i<text.length;i+=2){
        a=Name(text[i])*16+Name(text[i+1]);
        b=Name(password[i])*16+Name(password[i+1]);
        ans+=String.fromCharCode(a^b);
    }
    document.getElementById("answer").innerHTML=AutoSet(ans);
}
        </script>
        <title>自动解密</title>
    </head>
    <body>
        请输入要解密的密文:
        <br />
        <input id="text" type="text" placeholder="请输入要解密的密文" />
        <br />
        请输入密钥:
        <br />
        <input id="password" type="password" placeholder="请输入密钥" />
        <br />
        <button onclick="Solve()">提交</button>
        <br />
        明文: <span id="answer"></span>
    </body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值