Recent Posts

Code C#: Mã hóa cổ điển Vigenere (Vigenere Cipher)

-

(VIGENERE CIPHER)
///HÀM MÃ HÓA
static void VigenereEncrypt(ref StringBuilder s, string key)
{
    for (int i = 0; i < s.Length; i++) s[i] = Char.ToUpper(s[i]);
    key = key.ToUpper();
    int j = 0;
    for (int i = 0; i < s.Length; i++)
    {
        if (Char.IsLetter(s[i]))
        {
            s[i] = (char)(s[i] + key[j] - 'A');
            if (s[i] > 'Z') s[i] = (char)(s[i] - 'Z' + 'A' - 1);
        }
        j = j + 1 == key.Length ? 0 : j + 1;
    }
}
///HÀM GIẢI MÃ
static void VigenereDecrypt(ref StringBuilder s, string key)
{
    for (int i = 0; i < s.Length; i++) s[i] = Char.ToUpper(s[i]);
    key = key.ToUpper();
    int j = 0;
    for (int i = 0; i < s.Length; i++)
    {
        if (Char.IsLetter(s[i]))
        {
            s[i] = s[i] >= key[j] ?
                      (char)(s[i] - key[j] + 'A') :
                      (char)('A' + ('Z' - key[j] + s[i] - 'A') + 1);
        }
        j = j + 1 == key.Length ? 0 : j + 1;
    }
}
///HÀM CHÍNH
public static void MainMethod()
{
    StringBuilder s = new StringBuilder("ArkPhaze");
    const string key = "KeyData";
    VigenereEncrypt(ref s, key);
    Console.WriteLine(s);
    VigenereDecrypt(ref s, key);
    Console.WriteLine(s);
}
Tag: C, C++, C#, mã hóa cổ điển, Vigenere, Vigenere Cipher, an toàn, bảo mật

Related Post:

  • Giáo trình Java cơ bản tiếng việt Full Nội dung giáo trình tập trung vào những kiến thức căn bản nhất của lập trình java giúp người đọc bước đầu tiếp cập dễ dàng với công nghệ mới này, và đây cũng chính là một bước đệm để chúng ta trở thành “java shooter”. Một số vấn đề nâng trong ngôn ngữ lập trình java như: avabean, thiết kết giao diện dùng thư viện JFC(Java Foundation Class), lập trình mạng, lập trì… Read More
  • Phím tắt trong lập trình Java Lập trình Java, Android trong Eclipse chúng ta cần chuyển qua một class, phương thức , xóa hoặc ghi chú nhanh một dòng và các thao tác đó lặp đi lặp lại nhiều lần làm cho chúng ta mất rất nhiều thời gian khi phải chọn vùng code muốn xóa nhiều lần hoặc phải ghi chú từng dòng. Để khắc phục tình trạng đó Eclipse đã hỗ trợ cho chúng ta rất nhiều phím tắt để cho chúng… Read More
  • Ý nghĩ các từ khóa trong Java Ngôn ngữ lập trình Java có khoảng 50 từ khóa (keyword), bạn cần nhớ những từ khóa này vì chúng sẽ được dùng rất nhiều trong quá trình lập trình. Trong bài viết này mình sẽ liệt kê cho các bạn danh sách các từ khóa có trong Java (chưa đầy đủ) và ý nghĩa của từng từ khóa đó. Các từ khóa này phân biệt ký tự HOA/thường nhé, các bạn nên lưu ý… Read More
  • Các kiểu dữ liệu được MySQL chấp nhận  cơ sở dữ liệu MySQL đưa ra 3 nhóm kiểu dữ liệu chính sau đây: 1. Các kiểu dữ liệu Number INT – Kiểu số nguyên: Field nhận kiểu dữ liệu này nhận giá trị từ -2147483648 đến 2147483647 (số nguyên có dấu), hoặc từ 0 đến 4294967295 (số nguyên không dấu). Độ rộng field của kiểu này có thể lên đến 11 kí số. TINYINT – Kiểu số nguyên rất nhỏ: Field n… Read More
  • Lập trình java một số khái niệm và công nghệ mới 1. Mô hình web vớ HTML, Servlet và JSP  Html (HyperText Markup Language) là một ngôn ngữ đơn giản được dùng trong các tài liệu siêu văn bản (văn bản + thẻ), dựa vào các thẻ này đẻ trình duyệt web có thể đọc và hiểu thông tin trong tài liệu đó. Html không phải là một ngôn ngữ lập trình, nó đơn giản chỉ là ngôn ngữ đánh dấu văn bản, tuy nhiên nó rất quan trọng … Read More
  • Cơ sở dữ liệu là gì? và hệ quản trị CSDL MYSQL Lưu trữ thông tin là nhu cầu rất thông dụng trong cuộc sống của con người. Từ thời xa xưa con người đã biết sử dụng những vật dụng có sẵn để lưu trữ thông tin như in hình lên đá, in lên các gốc cây, thanh gỗ. Nhưng với công nghệ 2014 này thì việc lưu trữ đó đã trở nên quá lỗi thời. Thay vào đó công nghệ thông tin phát triển, người người đều có khả năng mua máy tính v… Read More




Klik untuk melihat kode: :) =( :s :D :-D ^:D ^o^ 7:( :Q :p T_T @@, :-a :W *fck* x@