公钥加密

RSA前台加密后台解密的应用

谁说胖子不能爱 提交于 2019-12-03 07:31:25
写在前面 安全测试需要, 要修改一下登录时密码传输逻辑, 保证密码传输保密性和完整性以及新增用户保存用户密码时存储保密性及完整性, 以下是测试方提供的思路: 关于传输保密性及完整性 前台js代码(关键代码已加粗), 关于数据进行RSA加密部分详细可参考: RSA前台加密后台解密的应用 var data = $(":input").each(function() { if (this.name == 'password') { //只加密密码 //获取公钥系数 var modulus = $('#hid_modulus').val(); //获取公钥指数 var exponent = $('#hid_exponent').val(); //获取最终公钥 var key = RSAUtils.getKeyPair(exponent, '', modulus); //获取需加密的值(口令) var passwordVal = $("#" + this.name).val(); //将口令md5 var hexMd5 = hex_md5(passwordVal); //生成uuid var uuid = guid(); //合并口令+md5(口令)+uuid passwordVal = passwordVal + hexMd5 + uuid;//进行数据加密 var ap =

RSA前台加密后台解密的应用

扶醉桌前 提交于 2019-12-03 07:25:36
写在前面 安全测试需要, 为防止后台响应数据返给前台过程中被篡改前台再拿被篡改后的数据进行接下来的操作影响正常业务, 决定采用RSA对响应数据进行签名和验签, 于是有了这篇<RSA后台签名前台验签的应用>. 我这里所谓的返给前台的数据只是想加密用户验证通过与否的字段success是true还是false, 前台拿这个success作为判断依据进行下一步的操作, 是进一步向后台发起请求还是直接弹出错误消息.照测试结果看这是个逻辑漏洞, 即使后台返回的是false, 在返回前台的过程中响应包被劫获, 将false改为true, 这样的操作也是能做到的(BurpSuit). 所以后台响应数据尽量不要再二次使用. 那既然能篡改, 如何防止流氓篡改呢? 说一下整体思路: 首先生成密钥对, 私钥存放在后台用于签名, 公钥存放在前台用于验签. 所谓签名就是指拿明文+私钥生成的 签名结果 , 返回数据给前台时将 明文+签名结果 一并返给前台, 前台用 公钥+接收到的明文+签名结果 进行验签, 这样即使响应包被劫获, 篡改明文后, 验证签名时也不会验证通过, 从而达到响应数据防篡改的目的. 接下来说一下具体步骤. 正文(具体步骤) 1.在线生成密钥对 采用在线工具生成密钥对, 私钥密码可填可不填, 网址: http://web.chacuo.net/netrsakeypair 生成密钥对备用. 2

公钥、私钥和数字签名的理解

夙愿已清 提交于 2019-12-03 06:54:31
/*--> */ /*--> */ 总的来说: 私钥来加密数据可以确定发送方的消息。 用公钥加密数据,只有使用自己的私钥才能看到数据,这样就保护了数据。 实例说明: 1代表我的公钥, 2代表我的私钥, 公钥与私钥是成对的,它们互相解密。 1.公钥加密 PeopleA用我的公钥 1来加密数据 a,将加密后的数据 b传递给我,只有我能够使用我的私钥 2将 b再恢复称 a,而其他人不知道我的私钥,所以 PeopleA与我之间就可以传输加密的数据,保护了数据。 RSA 算法是一种十分有效的公钥加密算法 2.私钥签名 我使用我的私钥 2加密了数据 a(只有我可以使用我的私钥),只有知道了我的公钥的人才能解密,能够确定这个数据是我发的 使用私钥来加密数据,用途就是数字签名 3.举栗 比如有两个用户 Alice和 Bob, Alice想把一段明文通过双钥加密的技术发送给 Bob, Bob有一对公钥和私钥,那么加密解密的过程如下: Bob将他的公开密钥传送给 Alice。 Alice用 Bob的公开密钥加密她的消息,然后传送给 Bob。 Bob用他的私人密钥解密 Alice的消息。 加深理解: 使用公钥与私钥的目的: 1. 我发送给你的内容必须加密,在传输过程中不能被别人看到。 2. 必须保证是我发送,不是别人冒充我的。 公钥,就是给大家用的,你可以通过电子邮件发布,可以通过网站让别人下载

geth创建外部账号的流程

匿名 (未验证) 提交于 2019-12-03 00:22:01
命令的代码执行流程 一、寻找命令入口 1.1. go-ethereum 工程/cmd/geth/main.go func init() { // 从这里知道,与account 命令相关的代码在accountCommand.go文件中 } 1.2. 打开 cms/geth/accountcmd.go Subcommands:[]cli.Command{ ................... { 从这里可以知道 new 命令的执行函数在accountCreate函数中 ................ 二、accountCreate 函数执行流程 // accountcmd.go func accountCreate (ctx *cli.Context) error { 加载配置文件, 获取keydir,scryptN, scryptP 提示输入密码 // 这里创建地址,生成公钥和私钥 打印地址 } ///////////////////////////////////////////////////////////////////////// //accounts/keystore/keystore_passphrase.go // 具体表现为生成一对公私钥,再由私钥算出地址并构建一个自定义的Ke y // StoreKey generatesa key, encrypts

信息的加密与解密

匿名 (未验证) 提交于 2019-12-03 00:05:01
信息的加密现有两种 对称加密:使用同一个密钥对信息进行加密和解密称为对称加密。 使用场景:A与B共同约定并存储一个密钥。 A -> B: A 使用密钥对数据进行加密后得到加密的信息发送给 B,B 使用该密钥对加密的信息进行解密,得到原始信息。 B -> A: B 使用密钥对数据进行加密后得到加密的数据发送给 A,A 使用该密钥对加密的数据进行解密,得到原始数据。 优点:加密解密速度快。 缺点: 相对不安全,由于 AB 双方使用的是同一个密钥进行加密解密,任何一方的密钥泄漏,整个加密解密过程就暴露了。 在与多方进行通信的时候必须使用不同的密钥,多个密钥造成密钥管理困难。如果 A 与 B 通信时和 A 与 C 通信时使用的是同一个密钥,那么如果 C 获取到了 A 与 B 通信时加密的信息就可以使用密钥进行解密,造成 A 与 B 之间信息的泄露。 非对称加密:加密和解密使用不同的密钥。如果加密使用的是公钥,那么就必须要私钥来解密。如果加密使用的是私钥,必须要公钥进行解密。在此需要先了解公钥、私钥这两个概念。 公钥:供给别人使用的密钥,使用公钥对信息加密的过程称之为加密,主要目的为防止信息传输过程中的泄漏。因为用于解密的私钥只有自己拥有。 私钥:供给自己使用的密钥,使用私钥对信息加密的过程称之为签名,主要目的是为了确保信息是由自己发出的

支付宝验签失败

匿名 (未验证) 提交于 2019-12-02 23:57:01
支付宝一直验签失败,看了各种文档一直以为别人说的是支付宝公钥问题我没有写错,最后才发现确实是支付宝公钥问题, 验签的public_key(包括发送请求前的和异步通知里的)实际上是支付宝开放平台中开放平台密钥页中该应用里点击接口加密方式后看到的支付宝公钥, 而不是mapi网关产品密钥页里的rsa密钥里的查看支付宝公钥。。。。。。。。。 来源:博客园 作者: 冰柠檬草 链接:https://www.cnblogs.com/li-mei/p/11465150.html

私钥、公钥、数字签名和数字证书

匿名 (未验证) 提交于 2019-12-02 23:48:02
先粗略解释一下: 一、公钥加密 假设一下,我找了两个数字,一个是1,一个是2。我喜欢2这个数字,就保留起来,不告诉你们(私钥),然后我告诉大家,1是我的公钥。 我有一个文件,不能让别人看,我就用1加密了。别人找到了这个文件,但是他不知道2就是解密的私钥啊,所以他解不开,只有我可以用数字2,就是我的私钥,来解密。这样我就可以保护数据了。 我的好朋友x用我的公钥1加密了字符a,加密后成了b,放在网上。别人偷到了这个文件,但是别人解不开,因为别人不知道2就是我的私钥,只有我才能解密,解密后就得到a。这样,我们就可以传送加密的数据了。 二、私钥签名 如果我用私钥加密一段数据(当然只有我可以用私钥加密,因为只有我知道2是我的私钥),结果所有的人都看到我的内容了,因为他们都知道我的公钥是1,那么这种加密有什么用处呢? 但是我的好朋友x说有人冒充我给他发信。怎么办呢?我把我要发的信,内容是c,用我的私钥2,加密,加密后的内容是d,发给x,再告诉他解密看是不是c。他用我的公钥1解密,发现果然是c。 这个时候,他会想到,能够用我的公钥解密的数据,必然是用我的私钥加的密。只有我知道我得私钥,因此他就可以确认确实是我发的东西。 这样我们就能确认发送方身份了。这个过程叫做数字签名。当然具体的过程要稍微复杂一些。 用私钥来加密数据的摘要,用途就是数字签名。 总结:公钥和私钥是成对的,它们互相解密。 公钥加密

ssh-key命令用法

匿名 (未验证) 提交于 2019-12-02 23:39:01
-b:指定密钥长度; -e:读取openssh的私钥或者公钥文件; -C:添加注释; -f:指定用来保存密钥的文件名; -i:读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥; -l:显示公钥文件的指纹数据; -N:提供一个新密语; -P:提供(旧)密语; -q:静默模式; -t:指定要创建的密钥类型。

RSA加密、解密、签名、验证

匿名 (未验证) 提交于 2019-12-02 23:34:01
RSA加密算法是一种非对称加密算法。它通常是先生成一对RSA密钥,其中之一是保密密钥(私钥),由用户保存;另一个为公开密钥(公钥),可对外公开。 公钥作用是加密和验证,私钥作用是解密和签名。 1.加密和解密 公钥加密: 私钥解密: 2.签名验签 公钥验签: 以上用到的: 验证: 文章来源: https://blog.csdn.net/whoknowswhoiam/article/details/90438198

python 各种加密

匿名 (未验证) 提交于 2019-12-02 22:54:36
加密学习 对称加密 对称密钥加密 , 又叫私钥加密。即信息发送的方和接受方用一个密钥去加密和揭秘数据。 最大的优势是 加解密速度快,适合对大量数据进行加密, 对称加密的缺点是密钥的管理和分配, 换句话说就是 如何把密钥发送到需要解密你的消息的人手里的问题。在发送密钥的过程中, 密钥有很大的风险被黑客拦截。 现实中的做法是将对称加密的密钥进行非对称加密然后传给需要他的人。 非对称加密 1) Alice需要在银行的网站做一笔交易,她的浏览器首先生成了一个随机数作为对称密钥。 (2) Alice的浏览器向银行的网站请求公钥。 (3) 银行将公钥发送给Alice。 (4) Alice的浏览器使用银行的公钥将自己的对称密钥加密。 (5) Alice的浏览器将加密后的对称密钥发送给银行。 (6) 银行使用私钥解密得到Alice浏览器的对称密钥。 (7) Alice与银行可以使用对称密钥来对沟通的内容进行加密与解密了。 (三)总结 (1) 对称加密加密与解密使用的是同样的密钥,所以速度快,但由于需要将密钥在网络传输,所以安全性不高。 (2) 非对称加密使用了一对密钥,公钥与私钥,所以安全性高,但加密与解密速度慢。 (3) 解决的办法是将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通。 python3