Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于C#解密程序在JavaScript中创建哈希字符串_Javascript_C#_Encryption_Hash - Fatal编程技术网

基于C#解密程序在JavaScript中创建哈希字符串

基于C#解密程序在JavaScript中创建哈希字符串,javascript,c#,encryption,hash,Javascript,C#,Encryption,Hash,我想用JavaScript写一个脚本来创建一个散列字符串,但是这个字符串应该使用一些公式,我的服务器端程序员在他的代码中使用这个公式 用于解码的C代码是: private string Decrypt(string cipherText) { string EncryptionKey = "MAKV2SPBNI99212"; byte[] cipherBytes = Convert.FromBase64String(cipherText); using (Aes encr

我想用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#
解密
方法接受。

因为您的源代码中有一个“encryptionKey”,所以您不希望JavaScript代码中有该密钥。JavaScript是客户端的,因此根据定义是不安全的

而是创建一个api调用:只需调用服务器端函数并以字符串或JSon对象的形式返回响应


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

可能重复使用Ajax将字符串从JavaScript发送到C#服务器后端并获取加密字符串。@lleaff谢谢,我以前发现过这个问题,但该解决方案不适用于我:(顺便说一句:哈希不能“解密”@UweKeim谢谢你的解决方案,我们不想解密字符串,我们有一个ID,所以我们不想让任何人猜得到,所以我们想散列这个ID,然后传递给服务器谢谢你的回答,我想在一个混合应用程序中使用这个代码,我会混淆我的代码,现在我不知道什么是
加密密钥
值。我找到了
CryptoJS
并使用此代码
var ciphertext=Crypto.AES.encrypt(ID,'MAKV2SPBNI99212');
但c#decryptor不接受哈希字符串!混淆不起安全作用。有一些取消混淆的工具。说真的:不要这样做that@MajAfy恕我直言,你使用了不正确的术语,并且对模糊处理的“安全性”表明,你对加密的了解还不够,无法自己实现。如果你想让你正在做的事情真正安全,对你和你的用户来说,你应该聘请专业的安全顾问或开发人员。你的C代码和计划中的更改都充满了安全漏洞。