Ý Tưởng về 1 kiểu mã hoá mới

Em có ý tưởng về một kiểu mã hoá thông tin như thế này, mọi người giúp em ý kiến vs ạ.

  • Mức độ bảo mật
  • Tính khả thi
  • Em có thể mang đi thi sáng tạo không ạ?
  • Đã có loại mã hoá nào giống như vậy chưa ạ?

ASC (ASCII Summary Code) - mã hoá dựa trên việc cộng thứ tự?


Như mọi người đã biết, bảng chữ cái chứa 26 kí tự và sẽ được đánh số từ 1 -> 26 ( A -> Z)
Sau đó người dùng sẽ nhập một Khoá BIểu làm công cụ mã hoá và tăng tính bảo mật.
Key này sẽ là một từ, không chứa khoảng trống, sau đó từ khoá này sẽ được “phủ” đến khi độ dài của khoá phủ bằng độ dài của text đầu vào.

//Key = ASC
Text: ASCII SUMMARY CODE ENCRYPTOR
Key : ASCAS CASCASC ASCA SCASCASCA
      ||||| ||||||| |||| |||||||||
Code: BLFJB VVFPBKB DHGF XQDKBQMRS

Cách thức hoạt động
Như đoạn chữ ở trên, ta thấy ở vị trí (i) thứ 1 thì text[i] -> A và key[i] -> A
Vị trí của text[i] trong bảng chữ sẽ là 1 và key[i] cũng là 1
khi đó tổng của text[i] và key[i] sẽ là 2 -> B (thứ tự trong bảng chữ cái)
và tiếp tục đến khi kết thúc ( i = length(text) )

Mã mã hoá (pascal)

function ASC(text, keyfilled: string): string;
var i: integer;
    m: string = '';
    u: byte;
begin
        for i:= 1 to length(txt) do begin
        if ord(txt[i]) < 65 then m:= m +txt[i]
        else begin
                u:= ord(txt[i])-64+ord(keyfilled[i])-64;
                while u > 26 do u:= u - LIM;
                m:= m + chr(64 + u);
        end;
        end;
        exit(m);
end;

Mã Giải

function ASC(txt: string): string;
var i,u: integer;
    m  : string = '';
begin
        for i:= 1 to length(txt) do begin
                if ord(txt[i])<65 then m:=m+txt[i]
                else begin
                     u:= ord(txt[i]) - ord(kfilled[i]);
                     while u < 1 do u:= LIM + u;
                     m:=m+chr(64+u);
                end;
        end;
        exit(m);
end;

Các cao nhân cho ý kiến giúp em vs ạ. Em xin cảm ơn

3 Likes

Cái này có rồi :slight_smile:

5 Likes

Ý kiến của một sinh viên có học nhập môn mã hóa vài buổi rồi nghỉ:
Trong mật mã thì đây là dạng mã hóa: thuật toán và khóa đều giấu. Dạng này không bàn tới vì không có gì để bàn: thuật toán và khóa đều giấu kín thì mỗi người một cách nghĩ, ngồi tìm cho uổng công.
Mã hóa dùng được là RSA: thuật toán mã hóa và giải mã đều công khai, public key cũng công khai, chỉ giữ lại private key. Rãnh thì đọc thêm cho vui. Không thì thi vô KHTN học.

3 Likes

khác vigenère chứ @drgnz , vì vigenère là dựa trên bảng nhưng về khoá và cách thức thì tương tự ^^

1 Like

:stuck_out_tongue:
Nhìn có vẻ khác, nhưng nó như nhau đấy.
Không tin em dò bảng Vigenera là thấy.
Chỉ khác một chút là nó thêm 1 đơn vị thôi.
Như A-A = A + 1 = B
S-S = K + 1 = L
C-C = E + 1 = F

Đúng hơn thì, với mỗi ký tự trong key, shift qua 1 rồi đem đi encrypt
Như ASC -> BTD
Đem BTD áp dụng Vigenere là y chang kq trên.

3 Likes

vậy mang đi thi sáng tạo được không a?

1 Like

Anh chưa thi bao giờ nên cũng ko rõ được không. :sweat_smile:
Em nên hỏi các thầy cô tư vấn sẽ ok hơn.

2 Likes

thanks a, tự dưng ngẫu hứng nghĩ ra đấy

1 Like

Không nên đâu em :sweat_smile: cái này mang đi thi nghịch nghịch cho vui, cọ sát thì chắc được chứ muốn vào sâu thì k ăn thua, cảm giác nó … đơn giản quá, mà lại không có áp dụng gì trong thực tế, tính mới cũng không rõ lắm.

Tốt nhất làm cái app java nào đó, phục vụ được một mục đích gì đó trong cuộc sống thì hay hơn

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?