javascript - 使用 jQuery 加密并使用 C# 解密

标签 javascript c# asp.net security encryption

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

我使用 Random 类在每个页面请求上生成唯一 key 。

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();"/>

加密数据()

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 银行登录页面上看到了相同的机制,他们首先加密用户的密码,然后发布表单。

最佳答案

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

创建一个附加 key 。密码(可能是问答之类的东西,母亲的名字或宠物的名字等)并将其用作加密或解密的 key 。

因此在登录时用户将输入

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

提交时。

  1. 使用预先录制的问题的答案对密码进行加密。
  2. 当服务器端收到密码时,将使用存储在服务器端(数据库)中的预先录制问题的答案来解密密码。
  3. 如果密码匹配允许或拒绝服务。

这样任何拦截您登录服务器端请求的人都将无法获得解密 key 。正如 smoksnes 所提到的,使用 https 来提高安全性

关于javascript - 使用 jQuery 加密并使用 C# 解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38991646/

相关文章:

javascript - 在javascript中从json数组构建树,没有父键但有前缀

c# - 我如何模拟 UserManager.GetRoles()

c# - SqlDataSource UpdateCommand 被调用两次

c# - 包括来自类库的服务引用

c# - 正在更改的线程参数

c# - 如果所有这些操作无论如何都必须发生,那么在一行中编写一组操作有什么好处吗?

asp.net - Stack Overflow 的迷你分析器

javascript - 如何将 ES 模块导出重命名为不是有效标识符的字符串文字

javascript - 使用局部变量调用时,protractor .get 不是函数

javascript - 使用jquery第n个子选择器进行选择