0

我想从此链接https://csharp.hotexamples.com/examples/Portable.Licensing.Security.Cryptography.ElGamal/ElGamalKeyStruct/-/php-elgamalkeystruct-class-examples.html实现 ElGamal 加密

这是我到目前为止所尝试的并且没有运气

string lic = "abcdefghijklmnopqrstuvwxyz";
byte[] licenseKey = Encoding.UTF8.GetBytes(lic);

ElGamalKeyStruct key = new ElGamalKeyStruct();
key.P = new BigInteger(123567890);
key.G = new BigInteger(1234567890);
key.Y = new BigInteger(1234567890);
key.X = new BigInteger(0); //zero

byte[] signature = CreateSignature(licenseKey, key);
bool verified = VerifySignature(licenseKey, signature, key);

VerifySignature总是false返回。

4

1 回答 1

1

P 必须是素数。请参见此处(这是您使用的代码的电子书):

创建一个随机素数 p。这个数字就是 ElGamal“模数”。表示 p 所需的位数就是公钥的大小,所以如果 p 用 1024 位表示,那么按照协议创建的密钥就是 1024 位的密钥。我们将选择 607 作为示例值。

如果您查看文本,则有生成 El Gamal 密钥的代码(CreateKeyPair()方法)

于 2018-07-19T10:43:26.990 回答