- [POWER AUTOMATE] Hướng dẫn gởi tin nhắn zalo từ file Excel - No code
- [C#] Chia sẻ code lock và unlock user trong domain Window
- [SOFTWARE] Giới thiệu bộ phần mềm tính Kết Cấu Thép HatteSale, Mộng Đơn, Dầm, Sàn, Móng Cọc, Vách, Xà Gồ, Tính Tải Trọng
- [DEVEXPRESS] Vẽ Biểu Đồ Stock Chứng Khoán - Công Cụ Thiết Yếu Cho Nhà Đầu Tư trên Winform
- [C#] Hướng dẫn bảo mật ứng dụng 2FA (Multi-factor Authentication) trên Winform
- [C#] Hướng dẫn convert HTML code sang PDF File trên NetCore 7 Winform
- [C#] Hướng dẫn viết ứng dụng chat với Gemini AI Google Winform
- Hướng dẫn khóa file bằng nhiều process id, không cho xóa tập tin
- Hướng dẫn cách tạo Product Id cho ứng dụng phần mềm XXXXX-XXXXX-XXXXX-XXXXX
- [SQLSERVER] Hướng dẫn tạo script sql từ ứng dụng Sqlserver management Studio
- [C#] Hướng dẫn sử dụng thư viện AutoITx lấy id và password Ultraviewer trên winform
- [VB.NET] Hướng dẫn lấy thông tin tài khoản đăng nhập windows và khởi động lại ứng dụng ở chế độ Administrator
- [C#] Sử dụng thư viện Polly gửi lại request api khi request bị lỗi hay rớt mạng
- [DEVEXPRESS] Chia sẻ source code tạo báo cáo report in tem nhãn label trên C# winform
- [DEVEXPRESS] Hướng dẫn vẽ biểu đồ Bar Chart trên Winform
- [C#] Tạo form đăng nhập và đăng ký với hiệu ứng Sliding Animation Effect
- [C#] Hướng dẫn tạo thanh toán đơn hàng qua mã vạch VietQR sử dụng API PayOS hoàn toàn miễn phí
- [C#] Hướng dẫn ghi log ra RichTextBox giống Console trên Winform sử dụng thư viện Serilog
- [C#] Hướng dẫn cách tạo mã QR Code trên file Excel
- [VB.NET] Gởi tin nhắn và file đính kèm qua ứng dụng gởi tin nhắn Whats App
[C#] Hướng dẫn sử dụng thuật toán mã hóa và giải mã Atom-128 algorithm
Trong các bài viết trước mình đã hướng dẫn các bạn sử dụng rất nhiều thuật toán mã hóa: Md5, RSA, DES, AES, Binary, SHA...
Bài viết hôm nay mình sẽ tiếp tục hướng dẫn các bạn sử dụng một thuật toán mã hóa nữa là thuật toán mã hóa Atom-128 C#.
Mình sẽ chia sẽ hai hàm cho các bạn sử dụng:
1. Source code hàm Encode Atom-128
public static string Atom128Encode(string input)
{
string key = "/128GhIoPQROSTeUbADfgHijKLM+n0pFWXY456xyzB7=39VaqrstJklmNuZvwcdEC";
StringBuilder result = new StringBuilder();
int i = 0;
int[] indexes = new int[4];
int[] chars = new int[3];
do
{
chars[0] = i + 1 > input.Length ? 0 : (int)input[i++];
chars[1] = i + 2 > input.Length ? 0 : (int)input[i++];
chars[2] = i + 3 > input.Length ? 0 : (int)input[i++];
indexes[0] = chars[0] >> 2;
indexes[1] = ((chars[0] & 3) << 4) | (chars[1] >> 4);
indexes[2] = ((chars[1] & 15) << 2) | (chars[2] >> 6);
indexes[3] = chars[2] & 63;
if ((char)chars[1] == 0)
{
indexes[2] = 64;
indexes[3] = 64;
}
else if ((char)chars[2] == 0)
{
indexes[3] = 64;
}
foreach (int index in indexes)
{
result.Append(key[index]);
}
}
while (i < input.Length);
return result.ToString();
}
2. Hàm giải mã thuật toán Atom-128
public static string Atom128Decode(string input)
{
string key = "/128GhIoPQROSTeUbADfgHijKLM+n0pFWXY456xyzB7=39VaqrstJklmNuZvwcdEC";
StringBuilder result = new StringBuilder();
int[] indexes = new int[4];
int[] chars = new int[3];
int i = 0;
do
{
indexes[0] = key.IndexOf(input[i++]);
indexes[1] = key.IndexOf(input[i++]);
indexes[2] = key.IndexOf(input[i++]);
indexes[3] = key.IndexOf(input[i++]);
chars[0] = (indexes[0] << 2) | (indexes[1] >> 4);
chars[1] = (indexes[1] & 15) << 4 | (indexes[2] >> 2);
chars[2] = (indexes[2] & 3) << 6 | indexes[3];
result.Append((char)chars[0]);
if (indexes[2] != 64)
result.Append((char)chars[1]);
if (indexes[3] != 64)
result.Append((char)chars[2]);
}
while (i < input.Length);
return result.ToString();
}
Usage:
3. Cách sử dụng thuật toán
string encodedString = Atom128Encode("http://laptrinhvb.net");
string decodedString = Atom128Decode(encodedString);
HAVE FUN :)