PHPackages                             i-avatar777/service-ecdsa - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. i-avatar777/service-ecdsa

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

i-avatar777/service-ecdsa
=========================

Простая и быстрая реализация ECDSA на PHP используя библиотеку функций openssl

1.0.3(6y ago)0385↓50%MITPHP

Since Feb 5Pushed 6y ago1 watchersCompare

[ Source](https://github.com/i-avatar777/service-ecdsa)[ Packagist](https://packagist.org/packages/i-avatar777/service-ecdsa)[ Docs](https://github.com/i-avatar777/service-ecdsa)[ RSS](/packages/i-avatar777-service-ecdsa/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (6)Used By (0)

Простая и быстрая реализация ECDSA на PHP используя библиотеку функций openssl
------------------------------------------------------------------------------

[](#простая-и-быстрая-реализация-ecdsa-на-php-используя-библиотеку-функций-openssl)

### Введение

[](#введение)

Это PHP-реализация алгоритма цифровой подписи с эллиптической кривой. Он совместим с PHP 5.5+. Обратите внимание, что эта библиотека сильно зависит от пакета openssl для PHP, поэтому - в зависимости от вашей установки PHP - вам может потребоваться повторно скомпилировать ее с флагом "–with-openssl".

Модуль обернут вокруг встроенных функций openssl, поэтому все стандартные кривые должны поддерживаться. Значение по умолчанию: `secp256k1`.

### Инсталяция

[](#инсталяция)

Для инсталяции ECDSA-PHP используйте composer:

```
{
    "require": {
        "i-avatar777/service-ecdsa": "*"
    }
}
```

### Скорость

[](#скорость)

Мы провели тест на MAC Pro i7 2017. Мы пробежали библиотеку 100 раз и получили среднее время, отображаемое ниже:

БиблиотекаПодписьПроверкаservice-ecdsa0.6ms0.4ms### Пример кода

[](#пример-кода)

Как подписать json сообщение:

```
use iAvatar777\services\EllipticCurve\Ecdsa;
use iAvatar777\services\EllipticCurve\PrivateKey;

# Generate privateKey from PEM string
$privateKey = PrivateKey::fromPem("
    -----BEGIN EC PARAMETERS-----
    BgUrgQQACg==
    -----END EC PARAMETERS-----
    -----BEGIN EC PRIVATE KEY-----
    MHQCAQEEIODvZuS34wFbt0X53+P5EnSj6tMjfVK01dD1dgDH02RzoAcGBSuBBAAK
    oUQDQgAE/nvHu/SQQaos9TUljQsUuKI15Zr5SabPrbwtbfT/408rkVVzq8vAisbB
    RmpeRREXj5aog/Mq8RrdYy75W9q/Ig==
    -----END EC PRIVATE KEY-----
");

# Create message from json
$message = array(
    "transfers" => array(
        array(
            "amount" => 100000000,
            "taxId" => "594.739.480-42",
            "name" => "Daenerys Targaryen Stormborn",
            "bankCode" => "341",
            "branchCode" => "2201",
            "accountNumber" => "76543-8",
            "tags" => array("daenerys", "targaryen", "transfer-1-external-id")
        )
    )
);

$message = json_encode($message, JSON_PRETTY_PRINT);

$signature = Ecdsa::sign($message, $privateKey);

# Generate Signature in base64.
echo "\n" . $signature->toBase64();

# To double check if message matches the signature
$publicKey = $privateKey->publicKey();

echo "\n" . Ecdsa::verify($message, $signature, $publicKey);
```

Simple use:

```
# Generate new Keys
use iAvatar777\services\EllipticCurve\PrivateKey;
use iAvatar777\services\EllipticCurve\Ecdsa;

$privateKey = new PrivateKey;
$publicKey = $privateKey->publicKey();

$message = "My test message";

# Generate Signature
$signature = Ecdsa::sign($message, $privateKey);

# Verify if signature is valid
echo "\n" . Ecdsa::verify($message, $signature, $publicKey);
```

### OpenSSL

[](#openssl)

Эта библиотека совместима с OpenSSL, поэтому вы можете использовать ее для генерации ключей:

```
openssl ecparam -name secp256k1 -genkey -out privateKey.pem
openssl ec -in privateKey.pem -pubout -out publicKey.pem

```

Создайте message.txt файл и подпишите его:

```
openssl dgst -sha256 -sign privateKey.pem -out signatureDer.txt message.txt

```

А теперь подпишем:

```
use iAvatar777\services\EllipticCurve\Utils\File;
use iAvatar777\services\EllipticCurve\PublicKey;
use iAvatar777\services\EllipticCurve\Signature;
use iAvatar777\services\EllipticCurve\Ecdsa;

$publicKeyPem = File::read("publicKey.pem");
$signatureDer = File::read("signatureDer.txt");
$message = File::read("message.txt");

$publicKey = PublicKey::fromPem($publicKeyPem);
$signature = Signature::fromDer($signatureDer);

echo "\n" . Ecdsa::verify($message, $signature, $publicKey);
```

Вы можете проверить на своем терминале:

```
openssl dgst -sha256 -verify publicKey.pem -signature signatureDer.txt message.txt

```

```
openssl base64 -in signatureDer.txt -out signatureBase64.txt

```

Вы можете также проверить при помощи этой библиотеки:

```
use iAvatar777\services\EllipticCurve\Utils\File;
use iAvatar777\services\EllipticCurve\Signature;

$signatureDer = File::read("signatureDer.txt");

$signature = Signature::fromDer($signatureDer);

echo "\n" . $signature->toBase64();
```

### Запуск UNIT тестов

[](#запуск-unit-тестов)

```
php tests/test.php
```

###  Health Score

29

—

LowBetter than 60% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity15

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity60

Established project with proven stability

 Bus Factor1

Top contributor holds 90.9% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~4 days

Total

5

Last Release

2271d ago

Major Versions

0.0.1 → 1.0.02020-02-05

### Community

Maintainers

![](https://www.gravatar.com/avatar/92cf7abff9c8f3ca7a283336a10b3237b9b5a264d526ba53aa24edde79203968?d=identicon)[dram1008](/maintainers/dram1008)

---

Top Contributors

[![dram1008](https://avatars.githubusercontent.com/u/8858319?v=4)](https://github.com/dram1008 "dram1008 (10 commits)")[![i-avatar777](https://avatars.githubusercontent.com/u/51834909?v=4)](https://github.com/i-avatar777 "i-avatar777 (1 commits)")

### Embed Badge

![Health badge](/badges/i-avatar777-service-ecdsa/health.svg)

```
[![Health](https://phpackages.com/badges/i-avatar777-service-ecdsa/health.svg)](https://phpackages.com/packages/i-avatar777-service-ecdsa)
```

###  Alternatives

[afragen/git-updater-lite

A simple class to integrate with Git Updater for standalone plugin/theme updates.

201.7k](/packages/afragen-git-updater-lite)[aluguest/ical-easy-reader

An easy to understood class, loads a "ics" format string and returns an array with the traditional iCal fields.

122.7k](/packages/aluguest-ical-easy-reader)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
