【问题标题】:Create hash string in JavaScript based on C# decryptor基于 C# 解密器在 JavaScript 中创建哈希字符串
【发布时间】:2017-06-23 08:50:27
【问题描述】:

我想使用 JavaScript 编写一个脚本来创建一个哈希字符串,但是这个字符串应该使用我的服务器端程序员在他的代码中使用的一些公式,

用于解码的 C# 代码是:

private string Decrypt(string cipherText)
{
    string EncryptionKey = "MAKV2SPBNI99212";
    byte[] cipherBytes = Convert.FromBase64String(cipherText);
    using (Aes encryptor = Aes.Create())
    {
        Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
        encryptor.Key = pdb.GetBytes(32);
        encryptor.IV = pdb.GetBytes(16);
        using (MemoryStream ms = new MemoryStream())
        {
            using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateDecryptor(), CryptoStreamMode.Write))
            {
                cs.Write(cipherBytes, 0, cipherBytes.Length);
                cs.Close();
            }
            cipherText = Encoding.Unicode.GetString(ms.ToArray());
        }
    }
    return cipherText;
}

我不知道如何在 JavaScript 中加密/解密字符串。 如何编写脚本来加密 javascript 中的字符串?

更新: 我找到了CryptoJS 并使用了这段代码:

var ID = 12345;
var ciphertext = Crypto.AES.encrypt(ID, 'MAKV2SPBNI99212');

但是c#Decrypt方法不能接受散列字符串。

【问题讨论】:

  • 使用 Ajax 将字符串从 JavaScript 发送到 C# 服务器后端并取回加密字符串。
  • @lleaff 谢谢,我之前发现了这个问题,但那个解决方案对我不起作用:(
  • 顺便说一句:哈希不能被“解密”。
  • @UweKeim 感谢您的解决方案,我们不想解密字符串,我们有一个 ID,所以我们希望没有人能猜到这个,所以我们想要散列这个 ID,然后传递给服务器

标签: javascript c# encryption hash


【解决方案1】:

由于您的源代码中有一个“加密密钥”,因此您不希望在您的 JavaScript 代码中使用该密钥。 JavaScript 是客户端,因此根据定义(为此)是不安全的。

改为创建一个 api-call:只需调用一个 Server-Side-Function 并将响应作为字符串或 JSon-Object 返回。

所以您所要做的就是从外部调用该函数。无论您使用 asp.net 还是 mvc,您都没有提供任何信息,因此我无法提供任何代码示例,但您应该在 MSDN 上找到足够多的资源。

【讨论】:

  • 感谢您的回答,我想在混合应用程序中使用此代码,我会混淆我的代码,现在我不知道 EncryptionKey 的确切值是什么。我找到CryptoJS 并使用此代码var ciphertext = Crypto.AES.encrypt(ID, 'MAKV2SPBNI99212'); 但哈希字符串不被c#解密器接受!
  • 混淆对安全不起作用。那里有非混淆工具。说真的:不要那样做
  • @MajAfy 恕我直言,您使用不正确的术语以及对混淆“安全性”的根本错误信念表明您对加密技术的了解还不够,无法自己实施。如果您希望自己的工作实际上是安全的,对于您和您的用户来说,您真的应该聘请专业的安全顾问或开发人员。您的 C# 代码和计划中的更改都充满了安全漏洞。
猜你喜欢
  • 1970-01-01
  • 2018-08-26
  • 2011-11-29
  • 2013-08-22
  • 1970-01-01
  • 2018-03-09
  • 2016-03-18
  • 2018-07-16
  • 2011-04-28
相关资源
最近更新 更多