区块链的公钥私钥通讯流程
❶ 比特币公钥,私钥与地址的关系是怎样的
我把我家地址(地址)给你,你有可以查到我家邮编(公钥),你用我家邮编(公钥)+地址写信给我,邮件到我家邮递柜里面,我用只有我有的钥匙打开邮递柜(私钥)。
1、邮递柜被盗(数据库被盗)
2、钥匙被盗(私钥被盗)
3、知道我家地址(公钥被盗),邮递柜锁被暴力打开(私钥被暴力破解)。
❷ 像诚信币这样基于区块链的数字货币中,私钥,公钥,地址到底是怎么回事
很多小白刚入场时,就被私钥,公钥,地址,等等关系弄晕头。有的甚至把自己私钥搞丢了,地址上特别有钱,可偏偏就是取不出来,今天小白就把私钥,公钥,还有地址之间的关系跟大家捋一捋。
私钥、公钥和地址这三者的关系是:
私钥转换成(生成)公钥,再转换成地址,如果某个地址上有比特币或诚信币,就可以使用转换成这个地址的私钥花费上面的诚信币。公钥和地址的生成都依赖于私钥,所以私钥才最重要。
手机钱包也是同样,但因为手机的文件管理方式不像计算机那么方便。所以一般手机钱包会提供一个名为或类似“导出私钥”的功能,通过这个功能,就可以将私钥用各种形式导出来。
比如比特币手机钱包可以导出为二维码,可以打印或者扫描到纸上。更换手机时,装好比特币钱包扫描一下这个二维码,就可以实现迁移比特币。比特币手机钱包和诚信币手机钱包可以导出为一份明文字符串,打印到纸上——这就是纸钱包。
纸钱包让用户可以到任何有比特币或诚信币钱包的终端来花费你的比特币或诚信币。
由于钱包丢失或损坏会导致失去私钥,从而彻底失去该数字货币的转账权。要防止出现这样的悲剧,就要记得经常备份钱包里的数据。除了地址外,备份时也保存了所有的私钥。
总结
私钥要保护好,防止丢失,防止忘记,在手机清信息时方式被清除,最好手抄一份,但不要泄露。
要防止自己钱包丢失或损坏,导致丢失私钥,丧失数字货币的转账权,否则你顿再多币取不出来,还不是没用。
❸ 什么是公钥私钥
现在很多对称性加密算法,都是产生一个密钥对,就是你所问的公私钥~
一般来说公钥是用来加密的~私钥是用来解密的~
私钥是公开的,就是用在客户端~而公钥则是保密的~
举个例子吧~
由用户名A,和公钥3,可以得到一个序号5
那么通过私钥2,可以把序号5解密成A,
这样就容易验证序号的合法性,又不会失密~
3和2的确定是用一些特殊的函数做到的,他们之间有一定的关系,有3可以很容易的推出2来,但有2却很难推出3来~
大体就是这个意思了~
❹ 私钥公钥如何生成
常用命令如下:--生成RSA私钥(传统格式的)openssl genrsa -out rsa_private_key.pem 1024--将传统格式的私钥转换成PKCS#8格式的openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt--生成RSA公钥openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
❺ 区块链中的私钥是指什么
私钥公钥这个名词可谓是所有考题中最简单的了。
公开的密钥叫公钥,只有自己知道的叫私钥。
公钥(Public Key)与私钥(Private Key)是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),公钥是密钥对中公开的部分,私钥则是非公开的部分。
一句话明了~
❻ 公钥私钥加密技术怎么做
关于计算机信息加密/解密方面的知识,这个不是几句话就能够讲得清楚的。
要想熟练掌握这些方面的知识,必须要学习好很多理论课程,尤其是数学知识至关重要!!例如:组合数学、概率论与数理统叶、离散数学、高等数学、计算机密码编码学。
❼ 怎样实现对私钥(公钥)进行解密
要实现安全登录,可以采用下面三种方法,一种基于非对称加密算法,一种基于对称加密算法,最后一种基于散列算法。下面我们来分别讨论这三种方法。
非对称加密算法中,目前最常用的是 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,应该也是可以的。
这里客户端每次请求时服务器端发送的随机字符串都是不同的,因此即使入侵者监听到了这个随机字符串和加密后的提交的数据,它也无法再次提交相同的数据通过验证。而且通过监听到的数据也无法计算出密钥,所以也就无法伪造登录信息了。
对称和非对称加密算法不仅适用于登录验证,还适合用于最初的密码设置和以后密码修改的过程中,而散列算法仅适用于登录验证。但是散列算法要比对称和非对称加密算法效率高。
❽ RSA公钥与私钥的使用
这是加密过的俩个密钥吗? 没记错的话RSA的公钥和密钥是两个数字啊
❾ 说明公钥和私钥各在什么时候使用
1.公钥和私钥是一对经过算法得出来的两个文件,一个私钥只对应一个公钥,也就是有唯一性
密钥的路径:*.pkr是公钥 而 *.skr是私钥
2.获得别人的公钥可以使用PGP 软件里的“搜索”从“keyserver.pgp.com”服务器上找到。或者让对方给你发一个公钥给你。PGP一般用来发邮件较多,已经支待Out Look 或第三方邮件客户端。发邮件时PGP会检测到有一个会话(PGP软件里可以设置加密方式:所有邮件,指定域名或收件人等等)他会自动查询本地公钥且加密发送出去。要是只发个文件的话你可以用PGP软件里的“新建 PGP压缩包” 加密分单独设密码或者用对方的公钥加密。
3.PGP软件界面左侧:公钥一般都在“全部密钥”里、个人的私钥在“我的私钥”里。“全部密钥”里存放的都是别人的公钥包括你自己的,想把公钥给别人的话在那个公钥上”右键-->导出.“即可(是一个*.asc的文件)。在菜单“密钥”里有PGP密钥环属性。你会看到公私钥存放的位置。
4.发邮时件如设置后PGP会自动加密解密。发文件时在“新建 PGP压缩包” 加密,周上第2点的后一句。私钥不会在别人那里,只有在自己手里。除非你发给对方,用对方的公钥加密文件,然后对方用自己的私钥解密用自己公钥加密的文件,反之对方用你的公钥加密发给你。
5.PGP生成的是一对公私钥是两个文件,同上第1点。邮件加密的时候软件自动帮你用对方的公钥加密一般你不用管的。文件加密时注意下发给谁的用谁的公钥加密,因为有唯一性
追问:
1.Key中已校验选项为灰色,不是绿色的勾,请问是否有影响,如有该怎么修正
答:发邮件肯定会有影响,国为灰色的PGP软件不会启用,发邮件是会提示找不到公钥,需要你手动签下名,右键灰色公钥“sign”签名。这种情况一般是由于对方没有在PGP服务器上传后验证或是PGP软件的bug.
2.发送到服务器的公钥是跟邮箱挂钩的,那也就可以直接攻击邮箱后,重新制作公钥,用制作公钥发送到服务器替换原本公钥,这样就可以冒充原公钥,用新私钥解密。这就不安全了啊。
答:一个私钥只对应一个公钥,也就是有唯一性。别忘了私钥只在自己手里哦。