Mã hóa ROT 13

Thảo luận trong 'Thuật toán' bắt đầu bởi integer, 12 Tháng mười một 2011.

  1. Offline

    integer

    • Tiếu Ngạo Giang Hồ

    • :-?
    Số bài viết:
    1.695
    Đã được thích:
    1.313
    Điểm thành tích:
    900
    ROT13 (rotate by 13 places) khi dịch ra tiếng việt tôi tạm gọi là phương pháp mã hóa xoay vòng 13 vị trí. Nó là một dạng đơn giản của họ các phương pháp mã hóa văn bản thô (plain text) bằng cách thay thế dữ liệu đơn vị (kí tự, nhóm kí tự) trong văn bản bằng những đơn vị kí tự khác. Các đơn vị kí tự dùng mã hóa trong tình hướng này được gọi là ciphertext, còn nhóm các phương pháp vừa đề cập thì sẽ được gọi là substitution cipher.



    Phương thức mã hóa ROT 13 được thực hiện dựa trên thứ tự của bảng chử cái trong tiếng anh. Một kí tự sẽ được mã hóa bằng cách sử dụng kí tự sau nó 13 vị trí để thay thế cho nó. Khi giải mã thì ta chỉ cần làm tương tự như quá trình mã hóa, tức là cứ tiếp tục nhảy 13 vị trí tiếp theo, nếu tới cuối bảng chử cái thì đếm tiếp từ đầu bảng. Như vậy ROT13(ROT13(x)) = x với x là kí tự bất kì trong bảng chử cái. Việc mã hóa và giải mã cũng có thể thực hiện nhờ bảng tra (lookup table) được tạo sẵn dựa vào nguyên tắc trên như sau:
    [IMG]
    Khi đó chúng ta dễ dàng thấy rằng A sẽ được mã hóa thành N và B sẽ thành O. Với một chuỗi văn bản HELLO chúng ta sẽ có kết quả sau mã hóa là URYYB, không thể được hiểu bởi con người.


    [IMG]

    Như bạn có thể dễ dàng nhận ra, đây là phương pháp mã hóa rất sơ khai, tính bảo mật của nó hầu như không có, Chính vì thế mà thông thường người ta chỉ sử dụng phương pháp này trong các trò chơi như là đố chử, các bài kiểm tra IQ. Tuy nhiên qua bài viết này tôi mong muốn các bạn có một chút cảm nhận về mã hóa và hãy sữ dụng ý tưởng về quy tắc thay thế xoay vòng để áp dụng cho nhiều trường hợp ứng dụng khác trong quá trình phát triển ứng dụng.

    ieev.org


    lyvinhr00malt+F4 thích bài này.
  2. Offline

    integer

    • Tiếu Ngạo Giang Hồ

    • :-?
    Số bài viết:
    1.695
    Đã được thích:
    1.313
    Điểm thành tích:
    900
    Mã:
    import java.util.*;
    
    public class rot {
    
    	public static void main(String[] args) {
    
    		Scanner input = new Scanner(System.in);
    		System.out.print("Nhap chuoi ma hoa: ");
    		String s = input.nextLine();
    		String result = "";
    		
    		for (int i = 0; i < s.length(); i++) {
    
    			char c = s.charAt(i);
    				if 	(c >= 'a' && c <= 'm') 	c += 13;
    			else if (c >= 'n' && c <= 'z')	c -= 13;
    			else if (c >= 'A' && c <= 'M')	c += 13;
    			else if (c >= 'N' && c <= 'Z')	c -= 13;
    
    			result += c;
    		}
    		System.out.println(result);
    	}
    
    }
    
    alt+F4 thích bài này.
  3. Offline

    alt+F4

    • Core i3

    Số bài viết:
    596
    Đã được thích:
    423
    Điểm thành tích:
    450
    Các bô lão hay éc mìn nào khởi động lại cái viethan coder chứ lâu rồi chả thấy phong trào
  4. Offline

    integer

    • Tiếu Ngạo Giang Hồ

    • :-?
    Số bài viết:
    1.695
    Đã được thích:
    1.313
    Điểm thành tích:
    900
    Trước đã tổ chức được 2 tuần, xong đều tự giải hoặc giải xong thì phần thưởng quá là khó trao (kẹo mút :))). Nếu các bạn đã có nhã hứng thì giơ tay ủng hộ, sẽ có người tổ chức phong trào này :)
    alt+F4interpol thích bài này.
  5. Offline

    alt+F4

    • Core i3

    Số bài viết:
    596
    Đã được thích:
    423
    Điểm thành tích:
    450
    Vote mở lại :)), nâng phần thưởng lên là 1chai :)) (sting vàng/ dâu/ pepsi)
  6. Offline

    integer

    • Tiếu Ngạo Giang Hồ

    • :-?
    Số bài viết:
    1.695
    Đã được thích:
    1.313
    Điểm thành tích:
    900
    Cần 1 số lượng tham gia cơ bản, xem chúng ta có bao nhiêu người nào ?

Chia sẻ trang này

Advertising: Linux system admin | nukeviet | nukeviet 4 | Upload ảnh miễn phí