前端加密代码

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>RSA非对称加密登录</title>
<script src="~/JS/jquery-1.8.1.min.js"></script><script src="~/JS/RSA.js"></script>
<script src="~/JS/BigInt.js"></script>
<script src="~/JS/Barrett.js"></script>
<script type="text/javascript">
$(function () {
index.init();
}); var index = function () {
setMaxDigits(129);
//第一个参数为加密指数、第二个参数为解密参数、第三个参数为加密系数
var key_to_encode = new RSAKeyPair("010001", "", "A12A08F50D3B15E2BA7658C49A6CD068E3BB8AB439B8E5D125904F5C954AD7553CE712046182D299E3831516A2477578D86BA9D0C5C70D78FFCACCFD040C430A7B53729D517139B893DB7B228759D44BE5A3A5AE870287A2B5F165EE698EEAB9FEF345F82D27D789F0E5F79490AB324A4EDEE11A76A38FCB6E05F64335D2A60D");
var _initEvent = function () {
$("#submit").click(function () {
submitData();
});
} function submitData() {
var userName = $("#userName").val();
var pwd = $("#pwd").val();
pwd = encryptedString(key_to_encode, pwd)
$.ajax({
url: "/Home/Login",
data: {
"userName": userName,
"pwd": pwd
},
datatype: "json",
type: "get",
success: function (json) {
$("#result").html("登录结果:" + json.result + "<br/>前端传入密码:" + json.InPwd + "<br/>后端解密后:" + json.OutPwd);
}
});
} return {
init: function () {
_initEvent();
}
}
}(); </script>
</head>
<body>
用户名:<input type="text" id="userName" value="张三" /><br /><br />
密 码:<input type="text" id="pwd" value="12345677" /><br /><br />
<input type="button" id="submit" value="提交" />
<p id="result"></p>
</body>
</html>

后端登录处理和解密代码

        public ActionResult Login(string userName, string pwd)
{
string outPwd = RSADecrypts.RSADecrypt(pwd);
if (outPwd == "" && userName == "张三")
{
return Json(new { result = "登录成功", InPwd = pwd, OutPwd = outPwd }, JsonRequestBehavior.AllowGet);
}
else
{
return Json(new { result = "用户名或密码不对", InPwd = pwd, OutPwd = outPwd }, JsonRequestBehavior.AllowGet);
} } public static string RSADecrypt(string pToDecrypt)
{
string privateKey = "<RSAKeyValue><Modulus>oSoI9Q07FeK6dljEmmzQaOO7irQ5uOXRJZBPXJVK11U85xIEYYLSmeODFRaiR3V42Gup0MXHDXj/ysz9BAxDCntTcp1RcTm4k9t7IodZ1Evlo6WuhwKHorXxZe5pjuq5/vNF+C0n14nw5feUkKsySk7e4Rp2o4/LbgX2QzXSpg0=</Modulus><Exponent>AQAB</Exponent><P>0nRJAznZ9iAUkCkW//b9sQ5KquqRqqTe8/jp2ZAkCXuGz7WNCMQsSX/doJY0Dfum5MDeq0Y4ShB/LRSWhrKSrw==</P><Q>xArz6MLHAHOY7z76pA5o10mERKp7z4yhm/wFa9ghgy3Q3bQAfotRsLbT16ELmXqFi1Wo0Z2CprtZpVMsaGdyAw==</Q><DP>n0/t8WY6zCmOx26DfbKwavbBqU62hHIYYKG+DLcjwJXlAJmTsN4oFF+aGzV5JFirByHFrewTMmX4j9y08jR9+w==</DP><DQ>XDg+xrahgE/gmGLK6tOwc92sb9S2y0p/V241aqbQFPI/d5tORDjrY7KNcrjaSQd+vK297WUn6aDmKcQ3dqF62w==</DQ><InverseQ>N1WISfI5sfIovGeRCpTjz0kGfCuqURyjU+MxCD+xmCCgDcNKmSiDaUzKprnoCZbFd5IvSYGFSpPSdtpQ3qcVRw==</InverseQ><D>HgwCuIE7e1SWk/rvyKSx5GRU8kKwok7ChADYMvgoiGX9YU1EINPtpMA8j6F1JuJ5YcwM0H4XIuVktzApmegZVV6oS8xgdiWWixYufc8MThyP5FEBBd4LxPkVDSBsO3v8mdsWAZIi+Gup+SCnyrNqDp2a984/dfwyxWPj1PmacYc=</D></RSAKeyValue>";
CspParameters cspParameters = new CspParameters();
cspParameters.KeyContainerName = "containerName";
cspParameters.KeyNumber = ;
cspParameters.Flags = CspProviderFlags.UseMachineKeyStore; using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(cspParameters))
{
rsa.FromXmlString(privateKey);
byte[] result = rsa.Decrypt(HexStringToBytes(pToDecrypt), false);
System.Text.ASCIIEncoding enc = new ASCIIEncoding();
return enc.GetString(result);
}
} private static byte[] HexStringToBytes(string hex)
{
if (hex.Length == )
{
return new byte[] { };
} if (hex.Length % == )
{
hex = "" + hex;
} byte[] result = new byte[hex.Length / ]; for (int i = ; i < hex.Length / ; i++)
{
result[i] = byte.Parse(hex.Substring( * i, ), System.Globalization.NumberStyles.AllowHexSpecifier);
} return result;
}

生成公钥私钥代码

 private static string BytesToHexString(byte[] input)
{
StringBuilder hexString = new StringBuilder(); for (int i = ; i < input.Length; i++)
{
hexString.Append(String.Format("{0:X2}", input[i]));
}
return hexString.ToString();
} public static void CreateKey(out string publicKey, out string privateKey)
{ RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider();
RSAParameters parameter = rsaProvider.ExportParameters(false);
publicKey = BytesToHexString(parameter.Exponent) + "," + BytesToHexString(parameter.Modulus);
// publicKeyXML = rsa.ToXmlString(true);
privateKey = rsaProvider.ToXmlString(true);
}
}

注:RSA只是非对称加密算法的一种,在非对称加密中使用的主要算法有:RSAElgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等,对称加密算法中常用的算法有:DES3DES、TDEA、Blowfish、RC2、RC4、RC5IDEA、SKIPJACK、AES等

附Demo地址:http://download.csdn.net/detail/fcydxbd/9724553

参考地址:http://blog.csdn.net/dslinmy/article/details/37362661

RSA非对称性前端加密后端解密的更多相关文章

  1. C#使用RSA证书文件加密和解密示例

    修改MSDN上的示例,使之可以通过RSA证书文件加密和解密,中间遇到一个小问题. Q:执行ExportParameters()方法时,回报CryptographicException:该项不适于在指定 ...

  2. jsencrypt参数前端加密c#解密

    写程序时一般是通过form表单或者ajax方式将参数提交到服务器进行验证,如何防止提交的请求不被抓包后串改,虽然无法说绝对安全却给非法提交提高了难度,本篇采用jsencypt在前端进行加密的并且用C# ...

  3. RSA算法 JS加密 JAVA解密

    有这样一个需求,前端登录的usernamepassword,password必需加密.但不可使用MD5,由于后台要检測password的复杂度,那么在保证安全的前提下将password传到后台呢,答案 ...

  4. RSA加密算法的加密与解密

    转发原文链接:RSA加密算法加密与解密过程解析 1.加密算法概述 加密算法根据内容是否可以还原分为可逆加密和非可逆加密. 可逆加密根据其加密解密是否使用的同一个密钥而可以分为对称加密和非对称加密. 所 ...

  5. 使用PHP实现RSA算法的加密和解密

    本文提供使用RSA算法加密解密数据的PHP程序类(签名和验签的实现方式可以查看使用PHP实现RSA算法的签名和验签 这篇文章),封装了格式化公钥和私钥文件的方法,这样无论使用什么格式的公钥或者私钥都可 ...

  6. RSA生成、加密、解密、签名。

    首先,要会生成RSA密码对. https://app.alipay.com/market/document.htm?name=saomazhifu#page-23    (事例中的密钥对好像有问题,最 ...

  7. C#使用RSA证书文件加密和解密

    public class EncrypHelp { static public byte[] RSAEncrypt(byte[] DataToEncrypt, RSAParameters RSAKey ...

  8. JAVA WEB实现前端加密后台解密

    最近在研究登陆密码的加密,下边上具体代码,只是给出核心代码,具体的代码视业务而定吧,给位有什么问题或者意见请留言. 加密方法用的是AES-128-CBC,BASE64用的是org.apache.com ...

  9. 转发:RSA实现JS前端加密,PHP后端解密

    web前端,用户注册与登录,不能直接以明文形式提交用户密码,容易被截获,这时就引入RSA. 前端加密 需引入4个JS扩展文件,jsbn.js.prng4.js.rng.js和rsa.js. <h ...

随机推荐

  1. 【C#】toString("Format") 格式化

    1..ToString("P");//得到小数点后2位的百分比,自动 加上%号;//9512.35% 这个比较厉害! furenjun yoolonet

  2. python学习之路 第二天

    1.import 导入模块 #!/usr/bin/python # -*- coding:utf-8 -*- import sys print(sys.argv) 2.字符串常用方法: 移除空白: s ...

  3. 第一章 MYSQL的架构和历史

    在读第一章的过程中,整理出来了一些重要的概念. 锁粒度  表锁(服务器实现,忽略存储引擎). 行锁(存储引擎实现,服务器没有实现). 事务的ACID概念 原子性(要么全部成功,要么全部回滚). 一致性 ...

  4. celery使用方法

    1.celery4.0以上不支持windows,用pip安装celery 2.启动redis-server.exe服务 3.编辑运行celery_blog2.py !/usr/bin/python c ...

  5. java面向对象---成员变量和成员函数

    //成员变量 1.类定义了对象中所具有的变量,这些变量称作成员变量 2.每个对象都有自己的变量,和同一个类的其他对象的分开的 //函数与成员变量 1.在函数中可以直接写成员变量的名字来访问成员变量,那 ...

  6. 【Beta】Scrum08

    Info 由于雾霾严重,拍摄的照片笼罩了一层薄薄的白色. 时间:2016.12.21 21:35 时长:25min 地点:大运村1号公寓5楼楼道 类型:日常Scrum会议 NXT:2016.12.23 ...

  7. centos6.5 更新yum源

    在使用centos过程中,自带的yum源包,不能满足的情况下,这个时候就可以考虑升级yum源了.国内用的比较多的是163镜像地址为http://mirrors.163.com/.help/centos ...

  8. python中使用heapq查看最大与最小的N个元素列表

    怎么从一个集合中获取最大或最小的N个元素列表? heapq模块有两个函数:nlargest() 和 nsmallest() 可以完美解决这个问题. In [39]: import heapq In [ ...

  9. maven报brors occurred during the build

    原因分析: 此问题一般发生在eclipse保存文件并自动部署时候.本人在写项目的时候,还没等部署好,关闭了了eclipse,结果出现了这种情况.有一种产生此错误的原因是因为此项目不不是由eclipse ...

  10. NFS 文件系统

    NFS的安装是非常简单的,只需要两个软件包即可,而且在通常情况下,是作为系统的默认包安装的. NFS服务的主要配置文件 /etc/exports /etc/exports文件内容格式: <输出目 ...