关于用rsa加密密码,解密时偶尔出现 bad data的问题

ahking 2016-04-02 08:46:09
用的是从网上查到的办法,在前端用js加密,传输过来后解密
前端用的是这几个文件
<script type="text/javascript" src="../Scripts/RSA/BigInt.js"></script>
<script type="text/javascript" src="../Scripts/RSA/RSA.js"></script>
<script type="text/javascript" src="../Scripts/RSA/Barrett.js"></script>

后台



private string Decrypt(string encryptedData, string privateKey)
{
using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider())
{
RSA.FromXmlString(privateKey);
byte[] _encryptedData = hexStrToByte(encryptedData);
byte[] decryptedData = RSA.Decrypt(_encryptedData, false);

return Encoding.UTF8.GetString(decryptedData);

}
}

private string BytesToHexString(byte[] input)
{
StringBuilder hexString = new StringBuilder(64);

for (int i = 0; i < input.Length; i++)
{
hexString.Append(String.Format("{0:X2}", input[i]));
}
return hexString.ToString();
}
/// <summary>
/// 字符串转16进制字节数组
/// </summary>
/// <param name="hex"></param>
/// <returns></returns>
public static byte[] HexStringToBytes(string hex)
{
if (hex.Length == 0)
{
return new byte[] { 0 };
}

if (hex.Length % 2 == 1)
{
hex = "0" + hex;
}

byte[] result = new byte[hex.Length / 2];

for (int i = 0; i < hex.Length / 2; i++)
{
result[i] = byte.Parse(hex.Substring(2 * i, 2), System.Globalization.NumberStyles.AllowHexSpecifier);
}

return result;
}


偶尔出现bad data 错误:
Bad Data.

说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Security.Cryptography.CryptographicException: Bad Data.


源错误:

执行当前 Web 请求期间生成了未经处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

堆栈跟踪:

[CryptographicException: Bad Data.
]
System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr) +41
System.Security.Cryptography.RSACryptoServiceProvider.DecryptKey(SafeKeyHandle pKeyContext, Byte[] pbEncryptedKey, Int32 cbEncryptedKey, Boolean fOAEP, ObjectHandleOnStack ohRetDecryptedKey) +0
System.Security.Cryptography.RSACryptoServiceProvider.Decrypt(Byte[] rgb, Boolean fOAEP) +315

关键不是每次都出现,只是偶尔出现,出现的时候也没发现什么规律,请问是怎么回事 ?
...全文
352 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ahking 2016-04-03
  • 打赏
  • 举报
回复
而且我为了测试,把RSA.Decrypt前把加密的数据及长度都写到数据库中,发现并没有数据的现象,真是奇怪啊
ahking 2016-04-03
  • 打赏
  • 举报
回复
引用 1 楼 shingoscar 的回复:
没传全,掉包这种事很正常的,可以自己加个完整性检查
这个如何加
ahking 2016-04-03
  • 打赏
  • 举报
回复
引用 2 楼 caozhy 的回复:
调试下,看看二进制数据传输是不是有问题。
没有传二进制数据啊,都转换为16进制数据了
threenewbee 2016-04-02
  • 打赏
  • 举报
回复
调试下,看看二进制数据传输是不是有问题。
Poopaye 2016-04-02
  • 打赏
  • 举报
回复
没传全,掉包这种事很正常的,可以自己加个完整性检查

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧