Mang đến cho bạn hành trang là Kiến thức và Kinh nghiệm

Lựa chọn chủ đề bạn quan tâm

Cùng nhau thảo luận về các vấn đề

Hãy theo dõi chúng tôi nếu bạn thấy bổ ích

  1. Hỏi đáp IT
  2. Hỏi nhanh

Tạo chữ ký số bằng giải thuật RSA trong lập trình C#

Xin chào các pro. Mình đang làm một bài tập với đề tài là: Xây dựng một chương trình ứng dụng của hệ mã hóa công khai. Và mình chọn xây dựng chữ ký số với giải thuật RSA. Có ai đã từng làm qua về chữ ký số có thể cho mình một chút gợi ý về code được hok? và mình cần phải làm gì. ..thak rất nhiều..
Câu trả lời

- Bạn đã sẵn sàng thảo luận về chủ đề này. Hãy bấm "Viết bình luận", bạn có thể lựa chọn sử dụng tài khoản Facebook hoặc Google++

- Vì sự phát triển của cộng đồng CNTT/CNPM tại Việt Nam!

Unknown user
No responses yet

Chào bạn. Tôi cũng đang tham gia 1 proj về chữ ký điện tử.
Bạn nên bắt đầu = tìm hiểu RSACryptoServiceProvider để sử dụng ký, ngoài ra phụ thuộc bạn sử dụng cái gì để ký chữ ký = file hay usb hay smart card...
Và bạn ký vào file pdf,doc hay là string... ?
Chưa kể nó là application hay là web :(
Về code thì hiện nay C# cũng cung cấp khá nhiều thông tin, code trên msdn.
1 Lượt thích

chào bạn..mình có đọc qua về RSACryptoServiceProvider nhưng chưa hiểu mấy...trước tiên mình muốn ký một đoạn text đã..mong bạn giúp nhé..code kiểu gì với..help
1 Lượt thích

Tham khảo code sau đây xem:
Ví dụ 1: Đơn giản để hiểu
Code :
using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;
namespace RSA
{
    class Program
    {
        static void Main(string[] args)
        {
 
            RSACryptoServiceProvider myrsa = new RSACryptoServiceProvider();
 
            System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();//Encode String to Convert to Bytes
 
            string data = "RsA EnCryPTion is cool!!!";//whatever you want to encrypt
           
            Byte[] newdata = encoding.GetBytes(data);//convert to Bytes
                             
            Byte[] encrypted = myrsa.Encrypt(newdata, false);
 
            Console.WriteLine("Encrypted Data:  ");
            for (int i = 0; i < encrypted.Length; i++)
            {
                Console.Write("{0} ", encrypted[i]);
            }
            Console.WriteLine();
            Console.WriteLine();
 
            Byte[] decrypted = myrsa.Decrypt(encrypted, false);//decrypt
            Console.WriteLine("Decrypted Data:  ");
 
            string dData = encoding.GetString(decrypted); //encode bytes back to string
            for (int i = 0; i < decrypted.Length; i++)
            {
                Console.Write("{0}", dData[i]);
            }
 
 
 
        }
    }
}
1 Lượt thích

Ví dụ 2: Phức tạp hơn
Code :
public class Cryptography
{
    public static RSACryptoServiceProvider rsa;
 
    public static void AssignParameter()
    {
        const int PROVIDER_RSA_FULL = 1;
        const string CONTAINER_NAME = "SpiderContainer";
        CspParameters cspParams;
        cspParams = new CspParameters(PROVIDER_RSA_FULL);
        cspParams.KeyContainerName = CONTAINER_NAME;
        cspParams.Flags = CspProviderFlags.UseMachineKeyStore;
        cspParams.ProviderName = "Microsoft Strong Cryptographic Provider";
        rsa = new RSACryptoServiceProvider(cspParams);
    }
 
    public static string EncryptData(string data2Encrypt)
    {
        AssignParameter();
        StreamReader reader = new   StreamReader(@"C:\Inetpub\wwwroot\dotnetspiderencryption\publickey.xml");
        string publicOnlyKeyXML = reader.ReadToEnd();
        rsa.FromXmlString(publicOnlyKeyXML);
        reader.Close();
 
        //read plaintext, encrypt it to ciphertext
 
        byte[] plainbytes = System.Text.Encoding.UTF8.GetBytes(data2Encrypt);
        byte[] cipherbytes = rsa.Encrypt(plainbytes,false);
        return Convert.ToBase64String(cipherbytes);
    }
 
    public static void AssignNewKey()
    {
        AssignParameter();
 
        //provide public and private RSA params
        StreamWriter writer = new   StreamWriter(@"C:\Inetpub\wwwroot\dotnetspiderencryption\privatekey.xml");
        string publicPrivateKeyXML = rsa.ToXmlString(true);
        writer.Write(publicPrivateKeyXML);
        writer.Close();
 
        //provide public only RSA params
        writer = new StreamWriter(@"C:\Inetpub\wwwroot\dotnetspiderencryption\publickey.xml");
        string publicOnlyKeyXML = rsa.ToXmlString(false);
        writer.Write(publicOnlyKeyXML);
        writer.Close();
 
    }
 
    public static string DecryptData(string data2Decrypt)
    {
        AssignParameter();
 
        byte[] getpassword = Convert.FromBase64String(data2Decrypt);
               
        StreamReader reader = new StreamReader(@"C:\Inetpub\wwwroot\dotnetspiderencryption\privatekey.xml");
        string publicPrivateKeyXML = reader.ReadToEnd();
        rsa.FromXmlString(publicPrivateKeyXML);
        reader.Close();
               
        //read ciphertext, decrypt it to plaintext
        byte[] plain =  rsa.Decrypt(getpassword,false);
        return System.Text.Encoding.UTF8.GetString(plain);
 
    }
}

Sử dụng:
//Gán Key
Cryptography.AssignNewKey();
//Encrypt
txt2.Text = Cryptography.EncryptData(txt1.Text);
//Decrypt
Txt3.Text = Cryptography.DecryptData(txt2.Text);
1 Lượt thích

Thak anh nhá. để em châm cứu dần dần nhá..xong em hỏi tiếp;;hhihii
0 Lượt thích

Chào bạn,
Đầu tiên, bạn làm theo hướng dẫn tạo cặp khóa public key và private key bằng phần mềm OpenSSL và cách đọc các khóa này bằng ngôn ngữ lập trình C# langcongnghe.com
Tiếp đó bạn làm theo hướng dẫn cách tạo chữ ký số bằng ngôn ngữ lập trình C# langcongnghe.com
0 Lượt thích

cho em xin code vơi demo được không a
ứng dụng chữ ký số bằng giải thuật RSA
em đang cần gấp,là người mới học em chưa quen lắm,có thể cho em với ạ
 
0 Lượt thích

Từ khóa tìm kiếm

Câu trả lời mới nhất

Tin tuyển dụng