.Net RijndaelManaged可以'找不到Javascript
.Net RijndaelManaged can't find Javascript
我在C#WCF中使用以下加密/解密:
public static string EncryptString(string InputText, string Password)
{
RijndaelManaged RijndaelCipher = new RijndaelManaged();
RijndaelCipher.Padding = PaddingMode.ISO10126;
if (string.IsNullOrEmpty(Password) == true)
{
Password = "Test";
}
byte[] PlainText = System.Text.Encoding.Unicode.GetBytes(InputText);
byte[] Salt = Encoding.ASCII.GetBytes(Password.Length.ToString());
//This class uses an extension of the PBKDF1 algorithm defined in the PKCS#5 v2.0
//standard to derive bytes suitable for use as key material from a password.
//The standard is documented in IETF RRC 2898.
PasswordDeriveBytes SecretKey = new PasswordDeriveBytes(Password, Salt);
//Creates a symmetric encryptor object.
ICryptoTransform Encryptor = RijndaelCipher.CreateEncryptor(SecretKey.GetBytes(32), SecretKey.GetBytes(16));
MemoryStream memoryStream = new MemoryStream();
//Defines a stream that links data streams to cryptographic transformations
CryptoStream cryptoStream = new CryptoStream(memoryStream, Encryptor, CryptoStreamMode.Write);
cryptoStream.Write(PlainText, 0, PlainText.Length);
//Writes the final state and clears the buffer
cryptoStream.FlushFinalBlock();
byte[] CipherBytes = memoryStream.ToArray();
memoryStream.Close();
memoryStream = null;
cryptoStream.Close();
cryptoStream = null;
PlainText = null;
Salt = null;
try
{
GC.Collect();
}
catch { }
return Convert.ToBase64String(CipherBytes);
}
public static string DecryptString(string InputText, string Password)
{
RijndaelManaged RijndaelCipher = new RijndaelManaged();
RijndaelCipher.Padding = PaddingMode.ISO10126;
if (string.IsNullOrEmpty(Password) == true)
{
Password = "Test";
}
byte[] EncryptedData = Convert.FromBase64String(InputText);
byte[] Salt = Encoding.ASCII.GetBytes(Password.Length.ToString());
//Making of the key for decryption
PasswordDeriveBytes SecretKey = new PasswordDeriveBytes(Password, Salt);
//Creates a symmetric Rijndael decryptor object.
ICryptoTransform Decryptor = RijndaelCipher.CreateDecryptor(SecretKey.GetBytes(32), SecretKey.GetBytes(16));
MemoryStream memoryStream = new MemoryStream(EncryptedData);
//Defines the cryptographics stream for decryption.THe stream contains decrpted data
CryptoStream cryptoStream = new CryptoStream(memoryStream, Decryptor, CryptoStreamMode.Read);
byte[] PlainText = new byte[EncryptedData.Length];
int DecryptedCount = cryptoStream.Read(PlainText, 0, PlainText.Length);
memoryStream.Close();
memoryStream = null;
cryptoStream.Close();
cryptoStream = null;
Salt = null;
try
{
GC.Collect();
}
catch { }
//Converting to string
return Encoding.Unicode.GetString(PlainText, 0, DecryptedCount);
}
现在,我正在尝试使用Java脚本来适应,希望在我的网络中加密数据,并能够在我的WCF中解密数据,我尝试使用这个脚本,但没有工作,在那里我可以找到Javascript或JS&净样本?
得到以下错误:{"要解密的数据长度无效。"}
谢谢。
好的,如果我理解正确,您希望在浏览器中用javascript加密用户名/密码,以便将数据安全地传输到WCF服务。为了实现这一点,您在两侧都使用AES(对称)加密。
如果这是正确的,那么您应该真正使用SSL。为什么?因为SSL可以做到这一点,但要好得多。简单地说,SSL将在对RSA密钥的公钥进行身份验证后协商AES密钥。因此,您可以获得客户端javascript的额外好处,因为它可以确保与正确的服务器通信。
我认为roll您自己的AES方法的错误在于,至少,您必须向客户端javascript公开您的密钥(没有公钥身份验证步骤)。这意味着你正在立即破坏安全性,因为任何拥有该密钥的人现在都可以向服务器发送数据。
如果我误解了,那么也许有合适的时机来做这件事,然而,目前我还没有看到。
希望这能有所帮助。
相关文章:
- 找不到javascript元素
- Spring 3.1 - 找不到 JavaScript 文件 - 404 错误
- 找不到 JavaScript/jQuery 键
- 为什么在Tomcat7中部署的html页面中导入时找不到javascript库
- 找不到 JavaScript 错误
- Ruby on rails 应用程序在生产环境中找不到 JavaScript 运行时(使用 passenger 和 ng
- 找不到 Javascript 原型方法覆盖
- 找不到 JavaScript 函数
- 找不到 Javascript/jQuery Google 地图路线
- PHP Laravel@include找不到javascript变量
- 在对象上找不到 JavaScript 原型方法
- 在 JSP 中找不到 JavaScript 函数
- 单击按钮以调用它时找不到 Javascript 函数
- 如果我在泽西岛的@Path注释中使用子资源,则找不到 JavaScript 文件
- .Net RijndaelManaged可以'找不到Javascript
- 在ubuntu 1004上安装execjs后,找不到Javascript运行时
- 找不到Javascript文件,无故添加了文件扩展名%22
- 如果在加载DOM时找不到javascript库,我该如何动态更改它
- Rake数据库:创建-Rake中止!找不到JavaScript运行时'Therupyracer'&&
- 由于控制台未报告错误,因此找不到Javascript的问题