加密使用jQuery和解密使用c#

本文关键字:密使 和解 jQuery 加密 | 更新日期: 2023-09-27 18:02:55

我喜欢在客户端浏览器上使用密钥加密的字符串在页面发布到服务器之前实现机制,然后我可以使用服务器端c#代码使用相同的密钥解密发布的字符串。

我使用随机类在每个页面请求上生成唯一密钥。

ASPX文件

<asp:TextBox runat="server" ID="txtData" ClientIDMode="Static"></asp:TextBox>
    <asp:HiddenField runat="server" ID="ClientKey" ClientIDMode="Static"/>
    <asp:Button runat="server" Text="Submit" OnClick="OnClick" OnClientClick="return EncryptData();"/>

EncryptData ()

function EncryptData() {
        var plaintext = $('#txtData').val();
        var secret = $('#ClientKey').val();
        var encrypted;// Encrypt(plaintext, secret);
        $('#txtData').val(encrypted);
        return true;
    }
c#

protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            int key = new Random().Next();
            ServerKey = key;
            ClientKey.Value = key.ToString();
        }
    }
protected void OnClick(object sender, EventArgs e)
    {
        // Decrypt(txtData.Text, ServerKey.ToString()));
    }

更新1

我在HDFC银行登录页面上看到过相同的机制,他们首先加密用户的密码,然后发布表单。

加密使用jQuery和解密使用c#

经过一番思考,我建议您可以这样做。让我们听听其他人的看法。

创建一个额外的密钥。一个密码短语(可能是问答类的东西,母亲的名字或宠物的名字等),并使用它作为加密或解密的密钥。

所以在登录时用户会输入

  1. 用户名
  2. 预先录制的问题答案,存储在服务器端已经注册

提交。

  1. 用预先录制的问题的答案加密密码。
  2. 在服务器端接收到时,将预先录制好的问题的答案与密码一起解密存储在服务器端(一个数据库)。
  3. 如果密码匹配允许或拒绝服务。

这样任何人拦截你的请求登录到服务器端将没有密钥解密。如前所述,使用https来增加安全性

我会重新考虑你正在做的事情的用法。您正在使用密钥加密某些内容,然后将该内容与密钥一起发送到服务器。当然,读取该值会更加困难,并且可能会吓到一些低级嗅探器,但这并不安全。

这样想。爱丽丝想给鲍勃寄一封情书,但爱丽丝不想让鲍勃以外的任何人看到这封信,所以她把它放在了一个保险箱里。她以为情书是安全的,就把它寄给了鲍勃。但是她记得Bob打不开保险箱,所以她在中也放了保险箱的钥匙

这里的问题是邮局或任何能接触到包裹的人都可以打开保险箱。在这个类比中,Alice是客户端(web浏览器,javascript),网线是邮局,服务器是Bob。

有很多方法可以使用javascript加密它。如:

http://point-at-infinity.org/jsaes/

https://code.google.com/archive/p/crypto-js/

如果你仍然想在客户端加密数据,这样做没有什么坏处,我会避免将请求中的密钥发送回服务器。它应该足以让服务器将其发送到客户端。那客户就不用把它退回去了。相反,您可以将会话存储在服务器端。这样你至少可以让中间人的威胁小一点。

但是在这种情况下,我会使用https来发送数据。

HTTPS统一资源标识符(uniform resource identifier, URI)方案具有相同的标准HTTP模式的语法,除了它的模式令牌。然而,HTTPS向浏览器发出信号,让它使用添加的加密层SSL/TLS保护流量。SSL/TLS特别适合HTTP因为它可以提供一些保护,即使只有一面对通信进行身份验证。HTTP就是这种情况Internet上的事务处理,通常只有服务器已验证(通过客户端检查服务器的证书)。

有人可能会认为https也可以被破解,但它仍然是发送敏感数据的更好选择。