asp.net (C#) 平台下如何加密用户登录密码?请高手请教。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net (C#) 平台下如何加密用户登录密码?请高手请教。相关的知识,希望对你有一定的参考价值。
网上找个MD5加密算法,一般都有现成的。下面是个例子 仅供参考
new一个MD5所在类的对象,例如:
//MD5所在类:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Security.Cryptography;
using System.IO;
using CACenter20.DAL;
using System.Data.SqlClient;
namespace CACenter20.DAL
/// <summary>
/// Summary description for DBOperation.
/// </summary>
public class DBOperation
public string Encrypt(string strPwd)
MD5 md5 = new MD5CryptoServiceProvider();
byte[] data = System.Text.Encoding.Default.GetBytes(strPwd);//将字符编码为一个字节序列
byte[] md5data = md5.ComputeHash(data);//计算data字节数组的哈希值
md5.Clear();
string str = "";
for (int i = 0; i < md5data.Length - 1; i++)
str += md5data[i].ToString("x").PadLeft(2, \'0\');
return str;
调用:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.htmlControls;
using CACenter20.DAL;
using System.Reflection;
using System.IO;
using System.Collections.Generic;
namespace CACenter20
protected void Page_Load(object sender, EventArgs e)
string pwd=“admin”;
DBOperation dbo = new DBOperation();
string MD5Pwd = dbo.Encrypt(pwd);
参考技术A 百度一下 常规的MD5算法。
注册用户时,密码用MD5加密,存入数据库。
用户登陆时。
输入登陆密码,取得密码,用MD5算法转换后与数据库的加密过后的密码比较。 参考技术B 1楼的流程说的很详细了!
基于vagrant工具在win7下免密登录linux
一、SSH加密方式
SSH采用的是”非对称密钥系统”,即耳熟能详的公钥私钥加密系统,其安全验证又分为两种级别。
1. 基于口令的安全验证
这种方式使用用户名密码进行联机登录,一般情况下我们使用的都是这种方式。整个过程大致如下:
(1)客户端发起连接请求。
(2)远程主机收到用户的登录请求,把自己的公钥发给客户端。
(3)客户端接收远程主机的公钥,然后使用远程主机的公钥加密登录密码,紧接着将加密后的登录密码连同自己的公钥一并发送给远程主机。
(4)远程主机接收客户端的公钥及加密后的登录密码,用自己的私钥解密收到的登录密码,如果密码正确则允许登录,到此为止双方彼此拥有了对方的公钥,开始双向加密解密。
PS:当网络中有另一台冒牌服务器冒充远程主机时,客户端的连接请求被服务器B拦截,服务器B将自己的公钥发送给客户端,客户端就会将密码加密后发送给冒牌服务器,冒牌服务器就可以拿自己的私钥获取到密码,然后为所欲为。因此当第一次链接远程主机时,在上述步骤的第(3)步中,会提示您当前远程主机的”公钥指纹”,以确认远程主机是否是正版的远程主机,如果选择继续后就可以输入密码进行登录了,当远程的主机接受以后,该台服务器的公钥就会保存到 ~/.ssh/known_hosts文件中。
2. 基于密匙的安全验证
这种方式你需要在当前用户家目录下为自己创建一对密匙,并把公匙放在需要登录的服务器上。当你要连接到服务器上时,客户端就会向服务器请求使用密匙进行安全验证。服务器收到请求之后,会在该服务器上你所请求登录的用户的家目录下寻找你的公匙,然后与你发送过来的公匙进行比较。如果两个密匙一致,服务器就用该公匙加密“质询”并把它发送给客户端。客户端收到“质询”之后用自己的私匙解密再把它发送给服务器。与第一种级别相比,第二种级别不需要在网络上传送口令。
PS:简单来说,就是将客户端的公钥放到服务器上,那么客户端就可以免密码登录服务器了,那么客户端的公钥应该放到服务器上哪个地方呢?默认为你要登录的用户的家目录下的 .ssh 目录下的 authorized_keys 文件中(即:~/.ssh/authorized_keys)
二、配置免密登录
1、背景介绍
目标:A免密登录B
系统:A为win7,B为centos7.0(vitualbox)
工具:vagrant,ssh(git自带,需要配置环境变量)
背景简介:我在windows7上面使用vagrant将网上的box生成了虚拟机,当然中间使用了virtualbox作为中间工具,但是每次使用vagrant打开虚拟机都需要使用密码,很麻烦,所以想配置免密登录,但是配置完成之后还是不行。
2、使用第二种验证方式配置
2.1 在windows上面生成密钥和公钥
在任何地方使用ssh-keygen -t -rsa
该命令表示的是使用rsa算法生成公钥和私钥,当然算法还有dsa算法也可以用。
此步骤在提示Enter file in which to save the key(xxxx)的时候,需要提供路径和文件,不然会生成不成功,此后会提示输入密码,可以直接回车跳过
同时,建议将文件生成在用户目录下的.ssh文件夹下面
生成完成之后在输入的文件路径下查看
2.2 将私钥添加到SSH agent中
因为默认只读取id_rsa,为了让SSH识别新的私钥,需将其添加到SSH agent中ssh-add ~/.ssh/id_rsa
如果出现Could not open a connection to your authentication agent的错误,试着用一下的命令:
ssh-agent bash
ssh-add ~/.ssh/id_rsa
2.3 拷贝公钥到linux
1)登录linux,查看当前用户,我的用户为root,所以直接进入root目录,当然也可以直接使用cd ~来进入当前用户目录,如果客户机多用户,建议查看下当前登录的用户。
2)确定linux下面是否有ssh,如果没有则执行yum/apt-get install ssh
3)在用户目录下创建.ssh目录
4)拷贝win7生成的公钥到linux下刚才创建的.ssh里面,并且重命名为authorized_keys
5)修改.ssh权限
chmod 700 -R .ssh修改目录权限,这点很重要, 必须修改, 否则会配置不成功。
三、问题解决
1、vagrant登录用户配置
本以为大功告成,可以免密登录了,但是不对,我启动vagrant的时候,出现了SSH auth method: password
这不还是要密码么。。。检查配置,原来我在使用linux的时候,使用了root登录,并进行了配置,所以导致需要密码
所以注释掉其中两行,依然可以root登录。
2、私钥的使用
当我重启虚拟机,看到default: SSH auth method: private key时,一顿鸡冻,以为终于搞定了,但是接下来就尴尬了。。。
妈蛋,这什么情况,不是就卡死了么。。。
仔细看告警,是权限授权失败,跟我们主机相关的权限就只有公钥和私钥。这种长时间无法通过vagrant ssh登陆的问题可能会由于ssh认证机制导致失败。vagrant默认采用key登录,但所用的KeyPair可能没有正常配置。
使用vagrant ssh-config查看
看起来好像没什么不对,因为私钥是有的,但是一想,私钥我没配置过,这个是在我建立box的时候有的,那时候还没在本机生成过公钥和私钥呢,所以果断把刚才在本机生成的私钥拷贝过来,并且改名为private_key,覆盖掉 f:/DownLoad/Vagrant/Box/centos7.0/.vagrant/machines/default/virtualbox/private_key
3、验证
上面的步骤完成之后,使用vagrant up启动虚拟机,然后使用vagrant ssh能顺利登录虚拟机则表示成功
注:如果环境不是使用的vagrant登录虚拟机,则只需看一二节即可,如果是其他ssh工具则需要看情况配置ssh服务或者私钥。
以上是关于asp.net (C#) 平台下如何加密用户登录密码?请高手请教。的主要内容,如果未能解决你的问题,请参考以下文章
C# ASP.NET;获取登录用户的 NetworkCredential 对象?
如何在 C# 页面 ASP.NET Core MVC 上使用 SignInManager 和 Usermanager