基于C#解密程序在JavaScript中创建哈希字符串
我想用JavaScript写一个脚本来创建一个散列字符串,但是这个字符串应该使用一些公式,我的服务器端程序员在他的代码中使用这个公式 用于解码的C代码是:基于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
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代码和计划中的更改都充满了安全漏洞。