我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:正版王中王 > 非常规编码 >

RSA非对称加密的一些非常规应用

归档日期:05-26       文本归类:非常规编码      文章编辑:爱尚语录

  前些时候,大概7月份看了些SSL协议的东西,对前人非常的佩服。把非对称加密的安全性和对称加密的快速性结合起来使用,保留了各自的长处。整个数据传输过程中,通过非对称加密在不安全的区域安全的传输了用于对称加密的密钥,实在是创造性的思维。

  前天晚上洗澡的时候,突然有了几个新的想法,加上以前的一点发现,就有了这篇文章和几行代码。现在觉得非对称加密还真的很有意思啊,洗澡也很有意思,难怪阿基米德洗澡能够发现浮力定理。我们不够强大,可能是因为洗澡不够吧。

  目前大多数的web应用在注册或者登录的时候,或者其他任何涉及到用户帐户,密码,以及信用卡号等等敏感数据传输的时候,一般都毫不犹豫的采用了HTTPS加密传输的方式来进行。比如Gmail,Yahoo Mail,Live Mail等国际性的邮箱,都是用了这种方式。确实,使用HTTPS是一种比较安全的方法,但是这样做从成本角度来说,并不是最优的。

  使用1024位密钥的HTTPS传输,在相同硬件配置的情况下,性能基本上要损失掉30%左右。大量的CPU时间花费到了对数据的加密解密以及证书认证,传输,SSL握手等方面。对于千万用户级别的应用这些损失是难以忽略掉的,因此大公司一般都会购买SSL硬件加密卡,使用硬件进行加密解密。

  鉴于RSA等非对称加密算法的public key是可以公开的,因此可以使用这种方式来传输数据,在某些场合取代昂贵的HTTPS传输。比如在邮箱的登录入口,用户点击提交按钮的时候,在本地使用JS代码将用户名和密码进行RSA加密。虽然public key明文存在于JS代码中,客户端可见,但是仅仅具备public key是无法推算出private key的,因此无法对加密后的数据进行捕获分析,加密后的数据可以安全的通过互联网传输。

  前些时间对国内国外的一些大型网站登录入口做了些分析,发现只有tencent的邮箱是使用的这种方式。他们用JS做了一个类,提供RSA加密算法的各种方法,在邮箱登录表单提交的时候调用加密。JS类的地址为,有兴趣的可以自己去研究。使用这种方式之后,服务端的计算量大大减少,只需要在用户提交的时候进行一次解密操作就可以了。而且这个解密,可以使用C语言做成模块,给前端展现语言调用,提高效率。如果有更高的安全性考虑,可以做一些改进,比如在客户端提交表单之前,在发送数据里面加入完整性检验等等,自由发挥即可。

  现在的论坛或者blog,都需要使用水印来防范强行破解密码的攻击方式,和防范发帖机器人的破坏。但是很多水印和应用系统结合在一起,不方便扩充和给第三方提供服务。这几天想到可以使用RSA加密来实现一套独立的水印算法,并且可以方便的提供给任意的第三方安全使用。

  主要思路是这样的,首先生成一对公钥和私钥。将公钥发布给需要使用水印服务的第三方,私钥保存在水印生成方。在使用方随机生成一个字符串,随后使用水印方提供的public key,使用RSA算法进行加密,将加密后的字符串发送给生成水印方。生成方使用private key对这个字符串进行解密,画出图形,将数据传输给水印使用方。虽然加密后的字符串在水印使用方的HTML源代码中明文可见,但是同上所说的,没有private key是无法解密的。对于安全性的一些加强,可以考虑同时在使用方与生成方之间共享一个用于对称加密的字符串。先对随机生成的水印数字进行对称加密,然后再RSA非对称加密,这样可以在万一丢失private key的情况下,仍然不容易马上被攻破。

  为了验证我的这个思路,今天写了一小段验证代码,发现还是比较好用的。我主要是把Pear里面的RSA类扒出来了,稍微改了一点点,然后做了一套测试系统。简单的代码如下,详细的见附件。

  垃圾邮件现在也是网络上很头疼的一个问题,使用非对称算法的签名功能,可以对伪造域的垃圾邮件进行鉴别,需要邮件接收方服务器的支持。理论不多说了,直接举例。假设我是,我给邮件。但是有人自己架设了mail服务器,伪装成给发邮件,试图取得他的信任,这种问题如何处理?好办,使用非对称加密的签名验证功能。

  首先,我在存放我的公钥文件,私钥自己保存好。然后对邮件服务器进行一些改进,对于本域发出去的所有邮件,包括邮件正文和接受者一起做一个签名,把签名附在邮件中一起发出去。而mail.ph4nt0m.org域中的邮件服务器在接收邮件时,从取得我的公钥,对签名进行验证,如果签名不对,马上提示用户遭受源域名伪造攻击。对于攻击者来说,他没有我的私钥,是不可能伪造出同样的签名的。

  以上几个想法,一直一来有个朦胧的感觉,但是一直抓不住,前几天洗澡的时候,突然明朗起来了。或者有人说,RSA这些非对称加密是可以破解的,我只能说,地球都会毁灭,何况是加密算法。

  .简介RSA是一种非对称的签名算法,即签名密钥(私钥)与验签密钥(公钥)是不一样的,私钥用于签名,公钥用于验签。在与支付宝交易中,会有2对公私钥,即商户公私钥,支付宝公私钥。商户公私钥:由商户生成,商...博文来自:baixiaoshi的专栏

  原址1.RSA加解密原理第1步:ipB先给A发送B公钥,ipA用B公钥加密A公钥发送给ipB,ipB拿到后,用B私钥去取里面内容,ipB拿到A公钥。第2步:双方通信前,先把自己公钥发给对方!用对方公钥...博文来自:unbroken

  简介RSA公钥加密算法是1977年由罗纳德·李维斯特(RonRivest)、阿迪·萨莫尔(AdiShamir)和伦纳德·阿德曼(LeonardAdleman)一起提出的。1987年首次公布,当时他们三...博文来自:罗小辉的专栏

  一、文章来由上一篇提到了网络加密算法中,非对称加密算法是现代网络安全的基石,而RSA算法是公钥加密算法中应用最广的算法之一。二、RSA算法的基础1、互斥关系大家都知道,一个很大很大的数很难进行因式分解...博文来自:This is bill的专属博客

  登录时采用md5或者base64神马的加密都是不可靠的,被抓包了还是可以模拟登录的,基本没啥用,只能说好过没有...接下来跟大家介绍下如何采用非对称加密,非对称加密的过程其实就是和https加密原理一...博文来自:爱技术爱生活—TAO

  数据传输加密  在开发应用过程中,客户端与服务端经常需要进行数据传输,涉及到重要隐私信息时,开发者自然会想到对其进行加密,即使传输过程中被“有心人”截取,也不会将信息泄露。对于加密算法,相信不少开发者...博文来自:Chay_Chan的博客

  RSA公钥加密算法是1977年由罗纳德·李维斯特(RonRivest)、阿迪·萨莫尔(AdiShamir)和伦纳德·阿德曼(LeonardAdleman)一起提出的。1987年7月首次在美国公布,当时...博文来自:黄孝果的博客

  RSA简介摘自百度百科-RSA:RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。RSA是1977年由罗纳德·李维斯特(RonRivest)、阿迪·萨莫尔(AdiSham...博文来自:kangpp的博客

  引用我举个例子说下我的理解哈:有A、B两人,A有公钥PK和私钥SK。假设B已经拿到了A的公钥,现在A要从B处获取一个机密文...博文来自:求人不如求己

  通过单例生成公钥和私钥(单例生成的好处除了优化程序外,也可以防止多IP登录造成干扰),前台只接受明文,由redis保存,每次登录失败、退出等只要是跳转到登录页面的都要将明文传过来。在这里封装成一个方法...博文来自:u014071328的专栏

  原文RSA公钥加密算法是1977年由罗纳德·李维斯特(RonRivest)、阿迪·萨莫尔(AdiShamir)和伦纳德·阿德曼(LeonardAdleman)一起提出的。1987年首次公布,当时他们三...博文来自:未来,你好!

  加密方式从密钥是否相同的角度分为对称加密和非对称加密。对称加密:“加密”和“解密”使用【相同的】密钥。非对称加密:“加密”和“解密”使用【不相同的】密钥。非对称加密服务端生成一对密钥(公钥和私钥),将...博文来自:yejingtao703的专栏

  加密举例比如有两个用户Alice和Bob,Alice想把一段明文通过双钥加密的技术发送给Bob,Bob有一对公钥和私钥,那么加密解密的过程如下:Bob将他的公开密钥传送给Alice。 Alice用Bo...博文来自:好习惯要坚持下去

  最近的一个项目中,要用到加密的知识。于是上网查了一些资料,翻看了一本很久以前买的书《JAVA加密与解密的艺术》,然后自己琢磨了一下,最后决定用了RSA典型非对称加密算法。下面就自己研究的代码分享一...博文来自:l345970908的博客

  首先我们加密的时候都是使用对称加密,就是加密解密都是使用一套秘钥非对称加密是指加密解密使用不同的秘钥说明:本次记录的加密思路是后台java生成1加密模块2加密公钥3加密秘钥其中公钥用于对字符串进行加密...博文来自:weixin_39168678的博客

  写在最前:此文目的是框架代码的使用,减少刚接触时的弯路,所以内容且不做详细累述一.使用node-rsa进行非对称加解密因为比特币中使用的非对称加密,所以在npm中对比找到一个比较方便也直观的库:nod...博文来自:传智播客 邹华栋

  估计密码学一段时间内多不会有什么更新了。非对称加密:非对称加密是与对称加密完全相反的概念,对称加密指的是加密解密使用的是同样的密钥Key,如流加密,块加密,一次性密码本之类的。而非对称加密,使用加密K...博文来自:新手村

  解释非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对...博文来自:lmjy102的博客

  php服务端与客户端交互、提供开放api时,通常需要对敏感的部分api数据传输进行数据加密,这时候rsa非对称加密就能派上用处了,下面通过一个例子来说明如何用php来实现数据的加密解密1、加密解密的第...博文来自:记录

  前言最近公司的客户端安全性出现了严重的问题,如今这个出解决方案并自我测试验证可行性的重任落在了我的身上,学习了很多他人的文章,再经过多次讨论,最后才确定最终解决方案。笔者在这里讲讲这一经历中所需要了解...博文来自:标哥

  参考:对称加密和非对称加密。对称加密中加密和解密用同一个密钥,如AES/DES。密钥一旦被泄露,那么...博文来自:越自律越自由

  此小demo的其它依赖文件,如各种库的JS、公私钥的文件网上都有或可以自己生成。所以就不贴了。大概目录如下以下为代码为核心,文件名为form.php,lt;?php error_report...博文来自:stone

  1、非对称加密过程:    假如现实世界中存在A和B进行通讯,为了实现在非安全的通讯通道上实现信息的保密性、完整性、可用性(即信息安全的三个性质),A和B约定使用非对称加密通道进行通讯,具体过程如下:...博文来自:Fabio的博客

  A要传给B一句话(需要保密),就由B生成一对公钥和私钥存好,公钥就好比一把锁,钥匙就是私钥。B只需要把锁给A,A把那句话锁起来,交还给B,在这过程中,即使大家都能看到公钥(锁),也是不知道那句话是啥的...博文来自:u r my sunshine

  前言最近研究了RSA非对称加密,关于什么是RSA,网上各种文章一搜一大把,但是关于如何使用RSA完成前后端的组合加密解密,东西就非常少了,并且由于RSA的特性,一个1024位的密钥只能加密117位字节...博文来自:MrSpirit的博客

  今天接触了rsa非对称加密查阅了许多资料得到了一下代码改了一下注释修改了一部分代码使其更容易理解一些...博文来自:辛苦的字幕君小样的博客

  RSA加密解密,签名校验;非对称加密;网络数据安全博文来自:gongxiaoou的博客

  最近在搞项目的接口持续性自动化测试,好久没有更新博客了。项目中接触到很多加密相关的数据,很多项目都会用到非对称加密算法来保证前端和服务器交互的数据安全。下面介绍下python下怎么使用RSA加密算法:...博文来自:niedongri的博客

  RSA属于公钥密码系统,反向使用公钥密码系统便提供了数字签名的功能,RSA的安全性较高,但是随之而来的计算量也较大(例如指数运算),且会随着规模的增加而增大。RSA初始化阶段需要找到两个大素数,p和q...博文来自:chuanglan的专栏

  1977年,MIT的三位老师Rivest、Shamir和Adleman设计了一种算法,可以实现非对称加密。这种算法以他们三个人的名字命名为RSA。RSA算法是使用最为广泛的非对称加密算法。RSA加密利...博文来自:流年绕指尖

  代码地址如下:一、概述1、数字签名的作用:保证数据完整性,机密性和发送方角色的不可抵赖性,加密与签字结合时,两套公...博文来自:findhappy117的博客

  注意:如果私钥直接写在PHP变量中,绝对不能缩进,复制进去怎样就怎样(最好将公钥私钥放在文本里,通过php去获取)RSA公钥/私钥在线生成:博文来自:的博客

  eclipse调优 一般在不对eclipse进行相关设置的时候,使用eclipse总是会觉得启动好慢,用起来好卡,其实只要对eclipse的相关参数进行一些配置,就会有很大的改善。 加快启动速度 ...博文来自:疯狂小强

  webService学习(二)—— 调用自定义对象参数 本文主要内容: 1、如何通过idea进行webService Client的简单实现(不再使用wsimport的方式,其实是ide帮我们做了...博文来自:止水的专栏

  本篇文章是根据我的上篇博客,给出的改进版,由于时间有限,仅做了一个简单的优化。相关文章:将excel导入数据库2018年4月1日,新增下载地址链接:点击打开源码下载地址十分抱歉,这个链接地址没有在这篇...博文来自:Lynn_Blog

  卷积神经网络是深度学习的基础,但是学习CNN却不是那么简单,虽然网络上关于CNN的相关代码很多,比较经典的是tiny_cnn(C++)、DeepLearnToolbox(Matlab)等等,但通过C语...博文来自:tostq的专栏

  1. 搜索框的属性的设置。要虚拟键盘显示“搜索”二字,需满足以下两个条件: (1)设置input属性 type=‘search’ (2)input需在form表单中。 html代码 ...博文来自:千里马的专栏

  扫二维码关注,获取更多技术分享 本文承接之前发布的博客《 微信支付V3微信公众号支付PHP教程/thinkPHP5公众号支付》必须阅读上篇文章后才可以阅读这篇文章。由于最近一段时间工作比较忙,...博文来自:Marswill

  说明 它一个有jruby语言编写的运行在java虚拟机上的具有收集分析转发数据流功能的工具 能集中处理各种类型的数据 能标准化不通模式和格式的数据 能快速的扩展自定义日志的格式 能非常方便的...博文来自:人生无处不修行

  游戏手柄(JoyStick)编程学习笔记(1)最近我开发的一个项目中需要用手柄控制一个二维移动平台的运动,找了些工业用的操作杆,感觉都挺丑的。后来想到打游戏时用的游戏手柄就挺漂亮,就决定试试用游戏手柄...博文来自:Ivan 的专栏

  深度卷积网络   涉及问题: 1.每个图如何卷积:   (1)一个图如何变成几个?   (2)卷积核如何选择? 2.节点之间如何连接? 3.S2-C3如何进行分配? 4.16-...博文来自:江南研习社

  一、冒泡排序 思想:重复走访过要排序的序列,一次比较两个元素,如果他们的顺序错误就将他们进行交换,一次冒上来的是最小的,其次是第二小。 时间复杂度:O(n^2) 空间复杂度:O(1) 稳定性:稳定 1...博文来自:tan313的专栏

  上周的时候,CESM的环境基本算是搭建完成了,得益于论坛中很多朋友的帮助,希望写一个尽量完整的搭建指南,供新同学参考。 当然欢迎高手们批评指正。 参考帖:博文来自:a1333888的专栏

  在网上所搜索很多操作Word的都是用VC,VS2010做了一些修改,添加操作的方式和用法都有所变化。 要操作Word必须先添加对应的类,如下图在工程中添加操作类(TypeLib中的 MFC类): ...博文来自:xiangjianbo127的专栏

  我们可能经常会用到这一功能,比如有时,我们不希望用户没有进行登录访问后台的操作页面,而且这样的非法访问会让系统极为的不安全,所以我们常常需要进行登录才授权访问其它页面,否则只会出现登录页面,当然我的思...博文来自:沉默的鲨鱼的专栏

  此处仅以VS2010为例,详细说明一下如何在VS环境下生成和使用C++的静态库与动态库。Qt下生成和使用静态和动态库后续再讲。 本文仅供初学者参考,如果有问题欢迎大家指正。        首先简单地理...博文来自:luyan的博客

  强连通分量: 简言之 就是找环(每条边只走一次,两两可达) 孤立的一个点也是一个连通分量   使用tarjan算法 在嵌套的多个环中优先得到最大环( 最小环就是每个孤立点)   定义: int Ti...博文来自:九野的博客

  SQL Server查询和检索操作。 一道例题学会查询和检索操作: 1、在SQL SERVER 2008上附加teaching数据库,其中三张表的含义解释如下: 学生表dbo...博文来自:J.Anson的博客

  jquery/js实现一个网页同时调用多个倒计时(最新的) 最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦! //js ...博文来自:Websites

  cocos2D-X 3.0渲染结构代码讲解,也是cocos2D-X源码讲解系列文章和从cocos2D-X学习OpenGL系列文章的开始...博文来自:手机游戏开发学习笔记

  dede2006:有参考价值,不过对于从VC++转过来的程序员来说,贴上的代码看起来不那么直接。 VS系列不友好的表现。

本文链接:http://merlejacobs.com/feichangguibianma/417.html