非对称加密算法ECC以及ECDSA签名 及java 实现

一、ECC加密解密【暂时无意义】

  椭圆加密算法(ECC)是一种公钥加密体制,最初由Koblitz和Miller两人于1985年提出,其数学基础是利用椭圆曲线上的有理点构成Abel加法群上椭圆离散对数的计算困难性。

  是目前已知的公钥体制中,对每比特所提供加密强度最高的一种体制。在软件注册保护方面起到很大的作用,一般的序列号通常由该算法产生。

  ECC算法在jdk1.5后加入支持,目前仅仅只能完成密钥的生成与解析。 如果想要获得ECC算法实现,需要调用硬件完成加密/解密(ECC算法相当耗费资源,如果单纯使用CPU进行加密/解密,效率低下).

代码地址:https://github.com/bjlhx15/algorithm-sign.git  加解密示例代码【仅有理解意义】

二、ECDSA签名

基于ECC与DSA签名算法分类信息,ECDSA(elliptic curve digital signature algorithm) 椭圆曲线数字签名算法:速度快,强度高,签名短

算法密钥长度默认长度签名长度实现的方
NONEwithECDSA112-571256128JDK/BC
RIPEMD160withECDSA同上256160BC
SHA1withECDSA...256160JDK/BC
SHA224withECDSA...256224BC
SHA256withECDSA...256256JDK/BC
SHA384withECDSA...256384JDK/BC
SHA512withECDSA...256512JDK/BC

 

秘钥长度可以选择使用 160 ,相当于rsa /dsa 的1024 秘钥长度。

签名示例

  代码地址:https://github.com/bjlhx15/algorithm-sign.git

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ECC是一种非对称加密算法,它使用椭圆曲线上的点作为密钥对,具有比RSA和DSA等算法更高的安全性和更小的密钥尺寸。下面是一个简单的C++代码示例,用于生成密钥对和加密解密数据: ```c++ #include <iostream> #include <cryptopp/eccrypto.h> #include <cryptopp/osrng.h> using namespace CryptoPP; using namespace std; int main() { AutoSeededRandomPool rng; // 生成密钥对 ECDSA<ECP, SHA256>::PrivateKey privateKey; privateKey.Initialize(rng, ASN1::secp256r1()); ECDSA<ECP, SHA256>::PublicKey publicKey; privateKey.MakePublicKey(publicKey); // 显示公钥和私钥 cout << "Private Key: " << privateKey.PrivateKeyLength() << endl; cout << "Public Key: " << publicKey.PublicKeyLength() << endl; // 加密解密数据 string plainText = "Hello, world!"; ECIES<ECP>::Encryptor encryptor(publicKey); ECIES<ECP>::Decryptor decryptor(privateKey); string cipherText; StringSource(plainText, true, new PK_EncryptorFilter(rng, encryptor, new StringSink(cipherText))); string decryptedText; StringSource(cipherText, true, new PK_DecryptorFilter(rng, decryptor, new StringSink(decryptedText))); // 显示加密和解密结果 cout << "Plain Text: " << plainText << endl; cout << "Cipher Text: " << cipherText << endl; cout << "Decrypted Text: " << decryptedText << endl; return 0; } ``` 需要使用Crypto++库来实现ECC加密算法,可以通过以下命令安装: ```bash sudo apt-get install libcrypto++-dev ``` 编译以上代码示例: ```bash g++ -o ecc ecc.cpp -lcryptopp ``` 注意:由于ECC是一种非对称加密算法,加密的速度较慢,不适合加密大量数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值