public void DsaTest() { string publicKey; string privateKey; string testData; byte[] bytes; byte[] sign; testData = "Hello World! ppppppppppppppppppppppppppppp" + "pppppppppppppppppppppppppppppppppppppppppp" + "pppppppppppppppppppppppppppppppppppppppppp" + "pppppppppppppppppppppppppppppppppppppppppp" + "pppppppppppppppppppppppppppppppppppppppppp" + "pppppppppppppppppppppppppppppppppppppppppp" + "pppppppppppppppppppppppppppppppppppppppppp" + "pppppppppppppppppppppppppppppppppppppppppp" + "pppppppppppppppppppppppppppppppppppppppppp" + "pppppppppppppppppppppppppppppppppppppppppp" + "pppppppppppppppppppppppppppppppppppppppppp" + "pppppppppppppppppppppp"; Dsa dsa = new Dsa(); (publicKey, privateKey) = dsa.CreateKey(); bytes = Encoding.UTF8.GetBytes(testData); sign = dsa.Sign(bytes, privateKey); if (sign.Equals(testData)) { Assert.Fail("署名に失敗"); } if (!dsa.Verify(bytes, sign, publicKey)) { Assert.Fail("検証に失敗"); } bytes[0] = 100; bytes[1] = 200; if (dsa.Verify(bytes, sign, publicKey)) { Assert.Fail("改ざんされているのに検証に成功"); } }
private void verifyBtn_Click(object sender, EventArgs e) { dsInput.Text = string.Empty; if (string.IsNullOrWhiteSpace(FilePath)) { MessageBox.Show("Error: Choose a file."); return; } if (string.IsNullOrWhiteSpace(SignaturePath)) { MessageBox.Show("Error: Choose a file with signature."); return; } try { var signatureContent = File.ReadAllText(SignaturePath); var signTuple = DsaSerializer.Deserialize(signatureContent); dsInput.Text = signTuple.ToString(); var verifyResult = dsa.Verify(MessageBytes, signTuple.Item1, signTuple.Item2); if (verifyResult) { MessageBox.Show("File is valid!"); } else { MessageBox.Show("File is invalid!"); } } catch (Exception ex) { MessageBox.Show("Error: Signature file is corrupt."); return; } }