alex2k19 / ecc
PHP椭圆曲线密码学库
dev-master
2020-07-25 11:43 UTC
Requires
- php: >=5.6.0
- ext-gmp: *
- fgrosse/phpasn1: ~1.5
- paragonie/random_compat: ^1|^2
Requires (Dev)
- phpunit/phpunit: ~4.1|~5.0
- squizlabs/php_codesniffer: ~2
- symfony/yaml: ~2.6|~3.0
This package is not auto-updated.
Last update: 2024-09-30 05:44:30 UTC
README
信息
这个库是Matyas Danter的ECC库的重写/更新。所有荣誉都属于他。
关于椭圆曲线密码学的更多信息,请阅读这篇文章。
库支持以下曲线
- secp112r1
- secp256k1
- nistp192
- nistp224
- nistp256 / secg256r1
- nistp384 / secg384r1
- nistp521
库提供了一个用于随机字节生成的类,对于PHP7+用户,由random_bytes
提供。PHP5.6用户将使用paragonie/random_bytes polyfill。
在ECDSA过程中,需要一个随机值k
。可以使用真正的随机数生成器来生成这个值,但如果同一个k
值被反复用于密钥,攻击者可以恢复这个签名密钥。HMAC随机生成器可以从消息哈希和私钥中派生出一个确定的k值,从而消除这个担忧。
库使用非分支蒙哥马利梯形进行标量乘法,因为它是恒定时间的,并且避免了秘密相关的分支。
兼容性说明
此库在v0.4.x版本中使用的依赖与PHP 7.2中新保留的关键字交互。因此,该库不能在7.2上使用。对于PHP7.0+分支,您应该升级到v0.5.x
许可
此软件包在MIT许可下发布。
要求
- PHP 5.6+
- composer
- ext-gmp
安装
您可以通过Composer安装此库
composer require mdanter/ecc
贡献
在发送拉取请求时,请确保运行make
命令。
默认目标运行所有PHPUnit和PHPCS测试。所有测试都必须通过,您的贡献才能被接受。
检查您的拉取请求的Scrutinizer分析结果也是一个好主意。
用法
示例