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;
và 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