要实现安全登录,可以采用下面三种方法,一种基于非对称加密算法,一种基于对称加密算法,最后一种基于散列算法。下面我们来分别讨论这三种方法。
非对称加密算法中,目前最常用的是 RSA 算法和 ECC(椭圆曲线加密)算法。要采用非对称加密算法实现安全登录的话,首先需要在客户端向服务器端请求登录页面时,服务器生成公钥和私钥,然后将公钥随登录页面一起传递给客户端浏览器,当用户输入完用户名密码点击登录时,登录页面中的 JavaScript 调用非对称加密算法对用户名和密码用用公钥进行加密。然后再提交到服务器端,服务器端利用私钥进行解密,再跟数据库中的用户名密码进行比较,如果一致,则登录成功,否则登录失败。
看上去很简单,但是这里有这样几个问题。目前 RSA 算法中,1024-2048 位的密钥被认为是安全的。如果密钥长度小于这个长度,则认为可以被破解。但这样的长度超过了程序设计语言本身所允许的数字运算范围,需要通过模拟来实现大数运算。而在 Web 系统的客户端,如果通过 JavaScript 来模拟大数运行的话,效率将会是很低的,因此要在客户端采用这样的密钥来加密数据的话,许多浏览器会发出执行时间过长,停止运行的警告。然而,解密或者密钥生成的时间相对于加密来说要更长。虽然解密和密钥生成是在服务器端执行的,但是如果服务器端是 PHP、ASP 这样的脚本语言的话,它们也将很难胜任这样的工作。ECC 算法的密钥长度要求比 RSA 算法要低一些,ECC 算法中 160 位的密钥长度被认为与 RSA 算法中 1024 位的密钥长度的安全性是等价的。虽然仍然要涉及的模拟大数运算,但 ECC 算法的密钥长度的运算量还算是可以接受的,但是 ECC 算法比 RSA 算法要复杂的多,因此实现起来也很困难。
对称加密算法比非对称加密算法要快得多,但是对称加密算法需要数据发送方和接受方共用一个密钥,密钥是不能通过不安全的网络直接传递的,否则密钥和加密以后的数据如果同时监听到的话,入侵者就可以直接利用监听到的密钥来对加密后的信息进行解密了。
那是不是就不能通过对称加密算法实现安全登录呢?其实只要通过密钥交换算法就可以实现安全登录了,常用的密钥交换算法是 Diffie-Hellman 密钥交换算法。我们可以这样来实现密钥的安全传递,首先在客户端向服务器端请求登录页面时,服务器端生成一个大素数 p,它的本原根 g,另外生成一个随机数 Xa,然后计算出 Ya = gXa mod p,将 p、g、Ya 连同登录页面一起发送给客户端,然后客户端也生成一个随机数 Xb,计算 Yb = gXb mod p,然后再计算 K = YaXb mod p,现在 K 就是密钥,接下来就可以用 K 作密钥,用对称加密算法对用户输入进行加密了,然后将加密后的信息连同计算出来的 Yb 一同发送给服务器端,服务器端计算 K = YbXa mod p,这样就可以得到跟客户端相同的密钥 K 了,最后用客户端加密算法的相应解密算法,就可以在服务器端将加密信息进行解密了,信息解密以后进行比较,一致则登录成功,否则登录失败。需要注意的时候,这里服务器端生成的随机数 Xa 和 客户端生成的随机数 Xb 都不传递给对方。传递的数据只有 p、g、Ya、Yb 和加密后的数据。
但是如果我们不采用加密算法而采用散列算法对登录密码进行处理的话,可以避免被直接解密出原文,但是如果直接采用 MD5 或者 SHA1 来对登录密码进行处理后提交的话,一旦入侵者监听到散列后的密码,则不需要解密出原文,直接将监听到的数据提交给服务器,就可以实现入侵的目的了。而且,目前 MD5 算法已被破解,SHA1 算法则被证明从理论上可破解,就算采用离线碰撞,也可以找出与原密码等价的密码来。所以直接采用 MD5 或者 SHA1 来对密码进行散列处理也是不可行的。
但是如果在散列算法中加入了密钥,情况就不一样了。hmac 算法正好作了这样的事情,下面我们来看看如何用 hmac 算法实现安全登录。首先在客户端向服务器端请求登录页面时,服务器端生成一个随机字符串,连同登录页面一同发送给客户端浏览器,当用户输入完用户名密码后,将密码采用 MD5 或者 SHA1 来生成散列值作为密钥,服务器端发送来的随机字符串作为消息数据,进行 hmac 运算。然后将结果提交给服务器。之所以要对用户输入的密码进行散列后再作为密钥,而不是直接作为密钥,是为了保证密钥足够长,而又不会太长。服务器端接受到客户端提交的数据后,将保存在服务器端的随机字符串和用户密码进行相同的运算,然后进行比较,如果结果一致,则认为登录成功,否则登录失败。当然如果不用 hmac 算法,直接将密码和服务器端生成的随机数合并以后再做 MD5 或者 SHA1,应该也是可以的。
这里客户端每次请求时服务器端发送的随机字符串都是不同的,因此即使入侵者监听到了这个随机字符串和加密后的提交的数据,它也无法再次提交相同的数据通过验证。而且通过监听到的数据也无法计算出密钥,所以也就无法伪造登录信息了。
对称和非对称加密算法不仅适用于登录验证,还适合用于最初的密码设置和以后密码修改的过程中,而散列算法仅适用于登录验证。但是散列算法要比对称和非对称加密算法效率高。
microsoft office 2010产品密钥25个字符密钥破解方法如下:
可以用压缩软件打开,找到安装文件执行就可以了。文件中包含了激活软件,激活软件的用法,可以看安装说明,这里包含整套office,如你只想要常用的三个,安装时可以选自定义安装,只选你要的即可。具体步骤:
1、用压缩软件打开下载后的文件,找到setup.exe,双击即可运行安装程序,在安装过程中可选择自定义安装,也可不选。
2、安装完成后,打开“激活破解”文件夹,先看说明,再按说明一步步操作即可完成激活。
以下方法亲测有效:如果知道解锁密码,可通过命令行解锁的方式找回恢复密钥,下面详述步骤:选择右下角“跳过(Skip this drive)”
然后选择故障排除(Troubleshoot):
然后选择高级选项(Advanced options):
然后选择“命令提示”(Command Prompt)
这时会弹出命令行cmd窗口,
输入manage-bde.exe -unlock C: -pw,然后会提示输入解锁密码,输入密码后回车(注意这个输入密码的界面不会显示输入内容,甚至不显示**),同样命令可以解锁任意磁盘,解锁成功后,输入exit退出命令提示窗口(这时C盘已经被解锁了 ),现在你可以正常登录系统,点继续(Continue),(这时仍需要输入解锁密码,输入你的bitlocker密码)就可登录系统(此时将不再提示你输入恢复密钥了),登录后再重新备份恢复密钥(打开电脑,右键选择被加密的分区,选择管理BitLocker,进入界面后选择重新备份恢复密钥即可。
如果启动Bitlocker加密时关联了微软帐户,可以登录微软官网账户来试着找回密码。
① 点我登录Microsoft账户(建议在电脑浏览器中打开,服务器原因可能会比较慢,需要耐心等待哦)
② 依次点击【管理】【管理修复密钥】,进入后即可看到所有设备的BitLocker修复密钥。
③ 若无法找回密钥,则只能重新安装操作系统,所以平时重要的数据还是尽量要及时备份
怎么破解vista? 这个简单,你去迅雷狗狗搜索里搜vista破解工具6.0,安装,右键--以管理员身份运行--点广告---点下面的变黑的激活,出现几分钟假死机状态,提示重启,重启后,被激活。vist...
谁可以推荐几个看漫画的公众号 看漫画的微信公众号有:快看漫画,神漫,宅男腐女福利社、二次元气社、动画学术趴、土豆动漫、动漫迷、漫画季、漫画居士等。微信公众号是开发者或商家在微信公众平台上申请的应用账号...
有什么软件能免费看VIP会员的电视剧? 免费看vip影视的软件有:影视大全、皮皮泡影视、红杏影视、西瓜影视、TEPVE(茶杯狐狸)、微光影视等等。影视大全 这是一个非常流行的视频播放软件,有海量的影视...
黑客入侵美国核潜艇系统,发射一枚核导弹。升空后自爆 黑客无法进入军用系统.再说核潜艇的系统是独立支撑的不是依赖互联网控制的.两者之前无法进行对接..不是军用级别的网络攻击是无法对武器系统进行干扰的.轰...
无需联网的单机破解游戏 至尊魔龙合击破解版。角色扮演角色扮演角色扮演传奇热血复古仙侠放置挂机仙侠自由交易文字mud放置挂机至尊魔龙合击破解版】88%以上的玩家给出了五星好评,这是一款直正可以回收装备的...
360档案恢复软体介面不能识别手机的移动碟符,如何解决? 可能是你的手机没有点击确认与电脑连接。将手机数据线拔下来重新插几次,可能是松动没插紧的原因。换个USB口重新插入看看,如果还没有那就是usb移...