Chương trình cài đặt

Một phần của tài liệu Nghiên cứu hệ mật đường cong Elliptic và ứng dụng vào chữ ký điện tử trong bảo mật giao dịch thanh toán của Ngân hàng (Trang 64 - 72)

Công nghệ được lựa chọn như sau:

• Web: ASP.Net

• Các thành phần còn lại như plugin, thư viện mã hóa, ứng dụng ngân hàng cũng được xây dựng bằng ngôn ngữ .Net

Một số đoạn mã

Tạo khoá

public void GenKey() {

Random rand = new Random(); do { d.value.genRandomBits((int)N.value.GetMaxDegree() +1,rand); } while (d.value.ToString(2).Length< 160); Q = G.PointMultiplyG(d); } Tạo chữ ký:

publicPrimeFiniteField[] GenSignature(string message) {

Point TempPoint = newPoint();

string HashedMessage = SimpleHash.ComputeHash(message, "SHA1", Salt);

System.Text.UTF8Encoding ue = new System.Text.UTF8Encoding(); byte[] bytes=ue.GetBytes(HashedMessage);

Console.WriteLine("E" + e.ToString()); PrimeFiniteField k = newPrimeFiniteField(); Random rand = newRandom();

PrimeFiniteField r = newPrimeFiniteField(); PrimeFiniteField s = newPrimeFiniteField(); do { do { do {

k.value.genRandomBits((int)N.value.GetMaxDegree() + 1, rand);

}

while ((k.value == 0) || (k.value >= N.value)); TempPoint = G.PointMultiplyG(k);

r.value = TempPoint.x.value.PositiveMod(N.value); }

while (r.value == 0);

s.value = (e.AddModulo(d.MultiplyModulo(r, N.value), N.value)).MultiplyModulo(k.InverseModulo(N.value), N.value).value;

}

while (s.value == 0);

Console.WriteLine(r.value.ToString()); Console.WriteLine(s.value.ToString()); returnnewPrimeFiniteField[] { r, s }; }

Xác thực chữ ký:

publicbool VerifySignature(string message, PrimeFiniteField r, PrimeFiniteField s) {

Point TempPoint = newPoint();

if ((r.value < 0) || (r.value >= N.value)) returnfalse; if ((s.value < 0) || (s.value >= N.value)) returnfalse;

string HashedMessage = SimpleHash.ComputeHash(message, "SHA1", Salt);

System.Text.UTF8Encoding ue = new System.Text.UTF8Encoding(); byte[] bytes = ue.GetBytes(HashedMessage);

PrimeFiniteField e = newPrimeFiniteField(bytes);

Console.WriteLine("E" + e.ToString()); PrimeFiniteField w = newPrimeFiniteField(); w = s.InverseModulo(N.value); (adsbygoogle = window.adsbygoogle || []).push({});

PrimeFiniteField u1 = newPrimeFiniteField(); PrimeFiniteField u2 = newPrimeFiniteField(); PrimeFiniteField v = newPrimeFiniteField(); u1= e.MultiplyModulo(w, N.value);

u2 = r.MultiplyModulo(w, N.value); Point X = newPoint();

X = G.PointMultiplyG(u1).addP192(Q.PointMultiply(u2)); if ((X.x.value == 0) || (X.y.value == 0)) returnfalse; else { v.value = X.x.value.PositiveMod(N.value); if (v.value == r.value) returntrue;

elsereturnfalse; }

}

Một số giao diện chương trình

Trang chỉnh sửa thông tin của giao dịch đã tạo ra, có thể ký trực tiếp lên giao dịch này.

CHƯƠNG VI. ĐÁNH GIÁ VÀ KẾT LUẬN

 Tổng kết lại các kết quả đã đạt được, tập trung trờn cỏc kết quả quan trọng nhất.

 Nhận xét và đánh giá các kết quả đạt được.

 Phân tích các thiếu sót và đề xuất các phương pháp cải thiện cũng như phương hướng phát triển tiếp theo mà đồ án hướng tới.

Một phần của tài liệu Nghiên cứu hệ mật đường cong Elliptic và ứng dụng vào chữ ký điện tử trong bảo mật giao dịch thanh toán của Ngân hàng (Trang 64 - 72)