首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    加密与安全_探索签名算法

    通过使用私钥加密消息,发送者相当于对消息进行了签名,因为只有发送者拥有私钥,所以只有发送者能够生成正确的签名。然后,其他人可以使用发送者的公钥来验证签名,确保消息确实是由发送者签署的。...hash = decrypt(publicKey, signature) 私钥用于签名,相当于用户的身份标识,只有持有私钥的用户才能够生成正确的签名。...它生成了RSA公钥和私钥,并使用私钥对消息进行签名,然后使用公钥验证签名的有效性。签名算法选择了SHA1WithRSA。...私钥推出公钥:与RSA不同,ECDSA的私钥可以推导出对应的公钥,这使得密钥管理更加灵活。 高效性能:ECDSA在签名和验证过程中具有较高的性能表现,尤其适用于资源受限的环境。...防止抵赖:由于数字签名是由发送方的私钥生成的,因此发送方不能够抵赖曾经生成过的签名。接收方可以利用签名来证明数据确实是由发送方发送的,从而防止发送方否认其责任。

    15600

    比特币源码分析之四:签名验证

    代表的公钥,对数据msg32的sig签名验证通过就返回true,否则返回false 2、secp256k1_ecdsa_sign 用于使用私钥生成签名 函数原型: int secp256k1_ecdsa_sign...中的msg32对应) 2)signature 输出参数 生成的签名 3)seckey 公钥 (与secp256k1_ecdsa_verify中的pubkey组成非对称加密的公私钥对) 调用逻辑为,用户A...使用私钥,通过secp256k1_ecdsa_sign函数对msg32做签名生成,生成signature,用户B使用公钥,通过secp256k1_ecdsa_verify对同样的数据msg32做sig验证...签名验证的源码封装 在《交易脚本》文中提到了CKey和CPubKey两个类是比特币源码中代表私钥和公钥的两个类,而这两个类又提供了签名生成和验证的封装。...TxA,给这笔交易注入3个比特币,其中输出脚本中填入了用户B的公钥的地址(hash(pubkey)),并表示如果谁想花这3个比特币就必须提供两个数据 1)B的公钥 2)B的私钥生成的签名 3、用户B使用私钥生成了

    3.3K81

    自己动手写区块链-公钥和私钥

    在区块链中,我们需要用到公钥和私钥。在之前的自己动手写区块链-发起一笔交易(Java版)中,我们就使用了公钥和私钥。其中公钥是钱包的地址,私钥则类似钱包的密码。 最常用到的公开秘钥算法无疑是RSA。...比如ssh连接的公钥和私钥,你总会看到RSA。 然而在区块链中人们都会去使用另一个算法:椭圆曲线算法。...ECDSA 在区块链中,用的最多的就是ECDSA(Elliptic Curve+DSA)。ECDSA是通过椭圆加密算法对DSA(数字签名算法)的模拟。...ECDSA于1999年成为ANSI标准,并于2000年成为IEEE和NIST标准。 我们在自己动手写区块链-发起一笔交易(Java版)用的也是ECDSA。 贴代码: ?...JDK7之后,增加了对ECDSA的实现,你看到上面的代码就是使用的KeypairGenerator来获取的的ECDSA实例,然后生成的公钥和私钥。

    1.4K60

    本体技术视点 | 绝招出击,巧妙规避随机数重用问题

    图源网络 在 ECDSA 签名算法中,随机数的重要性也不言而喻: 首先,随机数不能泄漏,泄漏的随机数可以使攻击者从签名结果中推导出签名者私钥; 其次,同一签名者不同签名时随机数不能重用,否则也可以使攻击者从签名结果中推导出签名者私钥...; 最后,不同签名者之间也不能重用随机数,否则其中任意一个签名者都能推导出其它签名者的私钥。...MAC 的基本思想是通信双方 Alice 和 Blob 共享一个密钥,消息发送方 Alice 利用私钥对消息生成消息认证码,并将其和消息一起发送给接收方 Bob。...但确定性 ECDSA 算法也可能遭受故障分析等侧信道分析攻击,在 HMAC 私钥计算中引入单调递增的量等来使得即使同一消息的签名结果也不同的作法是缓解这种攻击等方法。...但我们看到有一些基于多方安全计算的伪随机数生成器(PRG)和伪随机算法(PRF)等出现,这可能适用于门限 ECDSA。有理由相信,我们会看到更多更有性能的算法出现在区块链中,保证区块链的安全。

    55650

    证书管理系统

    服务器 RSA 证书: certm-mkcert --server cert1 注意: 如果想生成 国密 证书,使用参数--type sm2即可 如果想生成 ECDSA 证书,需要使用参数--type...吊销后,应当更新CRL,更新方式为certm-gencrl 如果想吊销 国密 证书,使用参数--type sm2即可 如果想吊销 ECDSA 证书,需要使用参数--type ecdsa即可 生成crl:...privkey.pem:客户端或服务器证书的私钥,格式为PEM csr.conf:生成证书请求时的配置文件 priv.csr:证书请求 对于国密证书,生成的文件如下: sm2/ ├── cert.p12...,格式为PEM enc-chain.pem:客户端或服务器加密证书,包含中间证书,格式为PEM enc-privkey.pem:客户端或服务器加密证书的私钥,格式为PEM enc-csr.conf:生成加密证书请求时的配置文件...:RSA和ECDSA证书的CA证书链,包含了根CA及中间CA证书 ca-gm.pem.crt:国密根CA证书 ca.pem.crt:RSA和ECDSA证书的根CA证书 由certm-gencrl命令生成

    12110

    数字签名与加密算法-下【mix指南之区块链】

    ECDSA 是用于基于椭圆曲线私钥/公钥对的数字签名算法。...区块链中的密钥分为公钥和私钥两种,是通过非对称加密算法生成的。 通过这种算法得到的密钥对能保证在世界范围内是唯一的。 公钥的主要作用:加密;验证签名。 私钥的主要作用:签名;解密。...在交易上的应用 主要理解清楚以下几个概念: 6.3.1 交易地址 从一个随机数生成私钥,公钥可以从私钥中派生出来。...1)B把交易地址(B的公钥)发送给A; 2)A查询其所拥有的区块(交易),用私钥解锁,生成签名写入交易的输入; 3)A生成交易申请,在交易输出中锁定1个数字币,并写入B的交易地址,然后向整个网络中的所有节点发出申请信息...7 用户体验设计 从密码学、加密算法,比特币采用的ECDSA算法,公钥与私钥、交易这些技术,有一些用户体验设计的思考,分享给大家: 7.1 私钥储存的重要性 采用非对称加密算法生成公钥及私钥,应用于区块链中

    1K20

    本体技术视点 | ECDSA中的随机数重用会导致什么问题?

    今天,我们就来看看为什么能从两个具有相同 值的签名结果中推导出私钥。 ECDSA简介 数字签名是区块链技术人员耳熟能详的一种密码算法,它包含密钥生成、签名和验证三个步骤。...密钥生成:该算法的输入是一个安全参数,比如签名长度。...关于 ECDSA 的形式化描述可以在网站:http://www.secg.org/ 上找到。 ?...但对于其它用户来说,则无法推导出这两个用户任意一个的私钥。 结语 在 ECDSA 中,随机数是一个十分重要的量。对于同一个用户,同一个随机数在不同签名中使用,会使得用户私钥暴露。...除此之外,在 ECDSA 中,如果随机数泄露,也将导致私钥泄露。随机数在密码算法中占据了一个重要地位,我们在应用中应认真对待随机数。

    1.4K20

    区块链密码基础之签名算法(一)

    区块链中私钥的生成,存储,恢复,销毁等全生命周期的在用户端完成,在保证用户端能抵御私钥的丢失和被盗的风险,同时又保证用户对账户中的数字资产拥有完全的控制权。...二、区块链地址的生成过程 区块链的所有权是通过私钥、区块链地址和数字签名来确定的。私钥只有用户自己拥有,仅存储在用户端。管理用户私钥的软件或者硬件我们一般称为钱包。...钱包的管理,如私钥生成、签名过程等都不需要网络连接,是独立于区块链网络而运行的,钱包的构建不需要与任何第三方信任机构交互。...比特币采用的是椭圆区块签名算法,私钥是一个数字,通常随机产生。此处需要注意,需要产生一个熵比较大的随机数,推荐采用密码算法中的随机数生成算法。...有些钱包设计中采用了一般语言的随机数生成,这样就会很容易被爆破,也就是我们所说的短地址攻击。比特币的地址生成如下图所示。

    1.9K10

    从零开发区块链应用(十一)--以太坊地址生成

    本文作者:杰哥的技术杂货铺[1] 一、生成以太坊地址私钥 1.1 生成以太坊地址私钥函数代码 创建常量 const ( BitcoinSeed = "Bitcoin seed" Mnemonic...ecdsa.PrivKeyFromBytes(ecdsa.S256(), keyBytes) return pub.ToAddress().String() } 1.2 pbkdf2.Key()...以下为使用助记词生成私钥的代码 package pbkdf2 import ( "crypto/rand" "crypto/sha512" "golang.org/x/crypto/pbkdf2...返回参数: PrivateKey:ECDSA 私钥 PublicKey:ECDSA 公钥 2.2 PrivKeyFromBytes 创建私钥、公钥对 根据作为参数作为字节切片传递的私钥返回“曲线”的私钥和公钥...我们应该知道,可以从私钥生成公钥。所以拥有私钥相当于拥有整个密钥对。 *ecdsa.PrivateKey 是 PublicKey 和 PrivateKey 的结构。

    1.4K10

    PHP怎么使用OpenSSL生成RSA加解密所需要的公私钥?

    加密的使用的场景很多,比如在编写API接口的时候、进行支付等安全需求比较高的通信以及进行数据传输的时候都需要用到加密措施来保证数据的安全 最近在打算做一个授权系统,也要用到这个RSA加密算法,所以这篇文章先说一下怎么生成...RSA加解密所需要的公私钥 在Windows下生成需要openssl.cof的支持,如果你装了Git bash客户端的话,也可以直接操作 我这里使用的是PHPStudy的集成环境,在它的Apache\conf...公钥、私钥都可以加密,也都可以解密 用公钥加密需要私钥解密,称为“加密”。...由于私钥是不公开的,确保了内容的保密,没有私钥无法获得内容 使用公钥加密数据,刷新或者重新请求会改变加密后返回的字符串 image.png 用私钥加密需要公钥解密,称为“签名”。...原创文章采用CC BY-NC-SA 4.0协议进行许可,转载请注明:转载自:PHP怎么使用OpenSSL生成RSA加解密所需要的公私钥?

    1.5K50

    TLS加密套件之密钥交换

    ,然后就可以计算出会话密钥了,于是之前截获的加密数据会被破解DHE 算法既然固定一方的私钥有被破解的风险,那么干脆就让双方的私钥在每次密钥交换通信时,都是随机生成的、临时的,这个方式也就是 DHE 算法...所以,即使有个牛逼的黑客破解了某一次通信过程的私钥,其他通信过程的私钥仍然是安全的,因为每个通信过程的私钥都是没有任何关系的,都是独立的,这样就保证了「前向安全」。...因为加密套件的第二个部分是针对证书的要求,所以当服务器配置ECC证书时,加密套件只能选择ECDSA_XXX或者ECDH_XXX。...由于ECDHE的密钥交换过程无需证书的实质性参与,所以RSA证书也可以和ECDHE一起工作;ECDHE的密钥交换方式可以参考我的另一篇博客;交换过程主要是client和server按照协商好的椭圆曲线去生成会话密钥...证书的私钥同样也是握手过程中的私钥,握手过程不需要server key exchange)第二部分_RSA或者_ECDSA表明的是想要的服务器证书签名类型。

    94051
    领券