RSA加密前端JS加密,后端asp.net解密,报异常

RSA加密前端JS加密,后端asp.net解密,报异常

 

参考引用:http://www.ohdave.com/rsa/的JS加密库

前端JS加密代码:

function GetChangeStr() 
{ debugger; var pwdStr = document.getElementById("txtPassWordStr").value; var uidStr= $("#<%=txtUserStr.ClientID%>").val(); if (!pwdStr || pwdStr.length == 0 || !uidStr || uidStr.length==0) { return false; } var keyE = "<%=PubRsaKeyE%>"; var keyM = "<%=PubRsaKeyM%>"; setMaxDigits(131); var key = new RSAKeyPair(keyE, "", keyM); var pwdRtn = encryptedString(key, pwdStr); var uidRtn = encryptedString(key, uidStr); $("#<%=txtPassword.ClientID%>").val(pwdRtn); $("#<%=txtUser.ClientID%>").val(uidRtn); }

后台解密代码:

        try
        {
            RSACryptoServiceProvider rsa = (RSACryptoServiceProvider)Cache.Get("privateKey");
            byte[] result = rsa.Decrypt(HexStringToBytes(password), false);
            password = Encoding.UTF8.GetString(result);

            result = rsa.Decrypt(HexStringToBytes(userName), false);
            userName = Encoding.UTF8.GetString(result);
        }
        catch (Exception ex)
        {
            ShowMessage("身份验证失败!", "您登陆的帐号或密码错误!","");
            return;
        }    

发现在某些研发环境时会报“参数错误”异常。但在其它项目或服务器环境是正常的。

没有找到原因,不明原理啊!!

仅此做个记录。

转载于:https://www.cnblogs.com/mxm2005/p/5015461.html

用javascript进行RSA加密并用C#后台接收解码。 /// <summary> /// 产生一组RSA公钥、私钥 /// </summary> /// <returns></returns> public static Dictionary<string, string> CreateRsaKeyPair() { var keyPair = new Dictionary<string, string>(); var rsaProvider = new RSACryptoServiceProvider(1024); RSAParameters parameter = rsaProvider.ExportParameters(true); keyPair.Add("PUBLIC", BytesToHexString(parameter.Exponent) + "," + BytesToHexString(parameter.Modulus)); keyPair.Add("PRIVATE", rsaProvider.ToXmlString(true)); keyPair.Add("PUBLICKEY", rsaProvider.ToXmlString(false)); return keyPair; } /// <summary> /// RSA解密字符串 /// </summary> /// <param name="encryptData">密文</param> /// <param name="privateKey">私钥</param> /// <returns>明文</returns> public static string DecryptRSA(string encryptData, string privateKey) { string decryptData = ""; try { var provider = new RSACryptoServiceProvider(); provider.FromXmlString(privateKey); byte[] result = provider.Decrypt(HexStringToBytes(encryptData), false); ASCIIEncoding enc = new ASCIIEncoding(); decryptData = enc.GetString(result); } catch (Exception e) { throw new Exception("RSA解密出错!", e); } return decryptData; } public static 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(); } 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; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值