Thứ Hai, 18 tháng 9, 2023

HÀM BĂM - HASH FUNCTION

    GIỚI THIỆU VỀ HÀM BĂM 


  Hàm băm thông dụng là một phép biến đổi một dãy "số" hoặc một dã "số và chữ cái" thành một số nguyên (khá bé):

                             H(k) = n

Biến đổi hàm băm là một đối một một chiều, nghĩa là nếu có k1 =/= k2 thì chắc chắn n1 =/n2 nhưng điều ngược lại không chắc đúng.

Hash Function is a function that converts a given numeric or alphanumeric key to a small practical integer value. The mapped integer value is used as an index in the hash table. In     simple terms, a hash function maps a significant number or string to a small integer that can be used as the index in the hash table.

The pair is of the form (key, value), where for a given key, one can find a value using some kind of a “function” that maps keys to values. The key for a given object can be calculated using a function called a hash function. For example, given an array A, if i is the key, then we can find the value by simply looking up A[i].
Types of Hash functions
There are many hash functions that use numeric or alphanumeric keys. This article focuses on discussing different hash functions:
  1. Division Method.
  1. Mid Square Method.
  1. Folding Method.
  1. Multiplication Method.
Let’s begin discussing these methods in detail.
1. Division Method:
This is the most simple and easiest method to generate a hash value. The hash function divides the value k by M and then uses the remainder obtained.
Formula:
h(K) = k mod M
Here,
k is the key value, and 
is the size of the hash table.
It is best suited that is a prime number as that can make sure the keys are more uniformly distributed. The hash function is dependent upon the remainder of a division. 
Example:
k = 12345
M = 95
h(12345) = 12345 mod 95 
               = 90
k = 1276
M = 11
h(1276) = 1276 mod 11 
             = 0
Pros:
  1. This method is quite good for any value of M.
  1. The division method is very fast since it requires only a single division operation.
Cons:
  1. This method leads to poor performance since consecutive keys map to consecutive hash values in the hash table.
  1. Sometimes extra care should be taken to choose the value of M.
2. Mid Square Method:
The mid-square method is a very good hashing method. It involves two steps to compute the hash value-
  1. Square the value of the key k i.e. k2
  1. Extract the middle r digits as the hash value.
Formula:
h(K) = h(k x k)
Here,
is the key value. 
The value of can be decided based on the size of the table.
Example:
Suppose the hash table has 100 memory locations. So r = 2 because two digits are required to map the key to the memory location.
k = 60
k x k = 60 x 60
        = 3600
h(60) = 60
The hash value obtained is 60
Pros:
  1. The performance of this method is good as most or all digits of the key value contribute to the result. This is because all digits in the key contribute to generating the middle digits of the squared result.
  1. The result is not dominated by the distribution of the top digit or bottom digit of the original key value.
Cons:
  1. The size of the key is one of the limitations of this method, as the key is of big size then its square will double the number of digits.
  1. Another disadvantage is that there will be collisions but we can try to reduce collisions.
3. Digit Folding Method:
This method involves two steps:
  1. Divide the key-value into a number of parts i.e. k1, k2, k3,….,kn, where each part has the same number of digits except for the last part that can have lesser digits than the other parts.
  1. Add the individual parts. The hash value is obtained by ignoring the last carry if any.
Formula:
k = k1, k2, k3, k4, ….., kn
s = k1+ k2 + k3 + k4 +….+ kn
h(K)= s
Here,
is obtained by adding the parts of the key k
Example:
k = 12345
k1 = 12, k2 = 34, k3 = 5
s = k1 + k2 + k3
  = 12 + 34 + 5
  = 51 
h(K) = 51
Note:
The number of digits in each part varies depending upon the size of the hash table. Suppose for example the size of the hash table is 100, then each part must have two digits except for the last part which can have a lesser number of digits.
4. Multiplication Method
This method involves the following steps:
  1. Choose a constant value A such that 0 < A < 1.
  1. Multiply the key value with A.
  1. Extract the fractional part of kA.
  1. Multiply the result of the above step by the size of the hash table i.e. M.
  1. The resulting hash value is obtained by taking the floor of the result obtained in step 4.
Formula:
h(K) = floor (M (kA mod 1))
Here,
is the size of the hash table.
is the key value.
is a constant value.
Example:
k = 12345
A = 0.357840
M = 100
h(12345) = floor[ 100 (12345*0.357840 mod 1)]
               = floor[ 100 (4417.5348 mod 1) ]
               = floor[ 100 (0.5348) ]
               = floor[ 53.48 ]
               = 53
Pros:
The advantage of the multiplication method is that it can work with any value between 0 and 1, although there are some values that tend to give better results than the rest.
Cons:
The multiplication method is generally suitable when the table size is the power of two, then the whole process of computing the index by the key using multiplication hashing is very fast.

   MỘT SỐ HÀM BĂM THÔNG DỤNG

                                                     Commonly used hash functions 

Hash functions are widely used in computer science and cryptography for a variety of purposes, including data integrity, digital signatures, password storage, and more.
There are many types of hash functions, each with its own strengths and weaknesses. Here are a few of the most common types:
1. SHA (Secure Hash Algorithm): SHA is a family of cryptographic hash functions designed by the National Security Agency (NSA) in the United States. The most widely used SHA algorithms are SHA-1, SHA-2, and SHA-3. Here’s a brief overview of each:
  • SHA-1: SHA-1 is a 160-bit hash function that was widely used for digital signatures and other applications. However, it is no longer considered secure due to known vulnerabilities.
  • SHA-2: SHA-2 is a family of hash functions that includes SHA-224, SHA-256, SHA-384, and SHA-512. These functions produce hash values of 224, 256, 384, and 512 bits, respectively. SHA-2 is widely used in security protocols such as SSL/TLS and is considered secure.
  • SHA-3: SHA-3 is the latest member of the SHA family and was selected as the winner of the NIST hash function competition in 2012. It is designed to be faster and more secure than SHA-2 and produces hash values of 224, 256, 384, and 512 bits.
2. CRC (Cyclic Redundancy Check): CRC is a non-cryptographic hash function used primarily for error detection in data transmission. It is fast and efficient but is not suitable for security purposes. The basic idea behind CRC is to append a fixed-length check value, or checksum, to the end of a message. This checksum is calculated based on the contents of the message using a mathematical algorithm, and is then transmitted along with the message. 
When the message is received, the receiver can recalculate the checksum using the same algorithm, and compare it with the checksum transmitted with the message. If the two checksums match, the receiver can be reasonably certain that the message was not corrupted during transmission.
The specific algorithm used for CRC depends on the application and the desired level of error detection. Some common CRC algorithms include CRC-16, CRC-32, and CRC-CCITT.
3. MurmurHash: MurmurHash is a fast and efficient non-cryptographic hash function designed for use in hash tables and other data structures. It is not suitable for security purposes as it is vulnerable to collision attacks.
4. BLAKE2: BLAKE2 is a cryptographic hash function designed to be fast and secure. It is an improvement over the popular SHA-3 algorithm and is widely used in applications that require high-speed hashing, such as cryptocurrency mining.
BLAKE2 is available in two versions: BLAKE2b and BLAKE2s. BLAKE2b is optimized for 64-bit platforms and produces hash values of up to 512 bits, while BLAKE2s is optimized for 8- to 32-bit platforms and produces hash values of up to 256 bits.
5. Argon2: Argon2 is a memory-hard password hashing function designed to be resistant to brute-force attacks. It is widely used for password storage and is recommended by the Password Hashing Competition. The main goal of Argon2 is to make it difficult for attackers to crack passwords by using techniques such as brute force attacks or dictionary attacks. It achieves this by using a computationally-intensive algorithm that makes it difficult for attackers to perform large numbers of password guesses in a short amount of time.
Argon2 has several key features that make it a strong choice for password hashing and key derivation:
  • Resistance to parallel attacks: Argon2 is designed to be resistant to parallel attacks, meaning that it is difficult for attackers to use multiple processing units, such as GPUs or ASICs, to speed up password cracking.
  • Memory-hardness: Argon2 is designed to be memory-hard, meaning that it requires a large amount of memory to compute the hash function. This makes it more difficult for attackers to use specialized hardware to crack passwords.
  • Customizable: Argon2 is highly customizable, and allows users to adjust parameters such as the memory usage, the number of iterations, and the output length to meet their specific security requirements.
Resistance to side-channel attacks: Argon2 is designed to be resistant to side-channel attacks, such as timing attacks or power analysis attacks, that could be used to extract information about the password being hashed.
6. MD5 (Message Digest 5): MD5 is a widely-used cryptographic hash function that produces a 128-bit hash value. It is fast and efficient but is no longer recommended for security purposes due to known vulnerabilities. The basic idea behind MD5 is to take an input message of any length, and produce a fixed-length output, known as the hash value or message digest. This hash value is unique to the input message, and is generated using a mathematical algorithm that involves a series of logical operations, such as bitwise operations, modular arithmetic, and logical functions.
MD5 is widely used in a variety of applications, including digital signatures, password storage, and data integrity checks. However, it has been shown to have weaknesses that make it vulnerable to attacks. In particular, it is possible to generate two different messages with the same MD5 hash value, a vulnerability known as a collision attack.
There are many other types of hash functions, each with its own unique features and applications. The choice of hash function depends on the specific requirements of the application, such as speed, security, and memory usage.
Last Updated : 09 Mar, 2023

Thứ Tư, 7 tháng 6, 2023

 THƯƠNG MẠI ĐIỆN TỬ TRONG THỜI ĐẠI SỐ


Học phần

THƯƠNG MẠI ĐIỆN TỬ 

Module: E.COMMERCE

e Course of FITHOU

Lecturers:

Prof. THAI THANH SON, Ph. D.
THAI THANH TUNG, Ph. D.



Thứ Tư, 26 tháng 10, 2022

Thứ Tư, 30 tháng 3, 2022

Kể chuyện Ông nội tôi

  • THÁI Y VIỆN TRƯỞNG
  • QUANG LỘC TỰ THIẾU KHANH
  • THÁI VĂN TỐ

Sống mãi trong lòng dân...




NHỚ LẠI VỀ MỘT CƠN ĐẠI DỊCH NĂM XƯA.
MỘT CÂU CHUYỆN VỀ ÔNG NỘI TÔI
(Cho cháu con ghi nhớ kẻo vài ba năm nữa tôi về với các Cụ rồi không còn ai biết nữa đâu)
Hôm nay 20 tháng 7 âm lịch, là kỵ nhật ông nội tôi... Giữa mùa đại dịch, ở đâu yên đấy, con cháu lòng thành có nén hương chén nước đơn sơ - nhưng là giỗ ông nên đơn sơ cũng phải có cút rượu dâng lên, tưởng nhớ ngày xưa những lúc nằm trong lòng nhìn ông uống rượu, nghe ông ngâm thơ...
Bồi hồi nhớ lại một lần tao ngộ.
Tháng 10 năm 1975, ngay sau giải phóng miền Nam, vì có chút "ưu ái" nên tôi được đi "công tác" vào Miền Nam loại sớm nhất, và ưu tiên số 1 tất nhiên là về thăm lại cố đô, nơi chôn nhau cắt rốn mà tôi đã ròi xa từ 28 năm trời.
Mà đã về Huế tất nhiên không thể không xuống thăm lại Cửa Thuận, nơi từng chất chứa bao nhiêu kỷ niệm đẹp của tuổi học trò ngây ngô. Và thế là tôi và vài người em họ (con các Cậu các Dì, hồi chiến tranh chống Mỹ ở lại trong Thành phố) chở nhau trên 3 chiếc Honda, vi vu về Thuận An.
Cửa Thuận hồi đó - nhất là từ sau Tết Mậu Thân - điêu tàn và hoang sơ lắm nên chúng tôi chỉ "tự túc" ăn chơi nhảy múa đến tầm 3 giờ chiều thì quay về và... khá đói. Ra khỏi bãi biển hơn 1 km thì đến một vạn chài có vẻ sầm uất, từ mấy quán nhỏ bên đường mùi mực nướng xộc lên mũi quá hấp dẫn: Bèn quyết định tấp dô một quán - thực ra là một quầy bày bán ngoài hàng hiên của một ngôi nhà nhỏ khá khang trang.
Chủ quán là một chị trung niên ngồi bận bịu nướng mực, rót trà cho khách nhưng trên chiếc chõng cuối hàng hiên còn có một cụ già tầm ngoài 70 đang lúi húi xếp cá phơi tôm gì đó, thỉnh thoảng nghênh nghênh hóng chuyện.
Thấy tôi mặc quần áo lính Miền Bắc - không phải quân giải phóng - nhưng lại nói chuẩn tiếng Huế "cột cờ", cụ già chợt hỏi: - " Nì, eng đồng chí, eng là bộ đội Bắc ngoài nớ răng lại noái tiếng xứ mềnh?" - "Dạ cháu cũng là dân Huế, năm 1947 vỡ mặt trận mới theo gia đình cơ quan ra Bắc rồi ở riết đến chừ mới về..." -" Rứa quê chú ở mô". Từ chỗ "đồng chí" đã được hạ cấp hay nâng cấp lên "chú"rồi! Tôi nói nhà mình ở Phường Thái Trạch trong Thành Nội, cụ hỏi kỹ càng hơn địa chỉ nhà - thẩm tra gì đây nhỉ ? - Nghe xong địa chỉ, cụ bỏ cả công việc, bước lại gần tôi và nói: -"Tui hỏi là có chuyện, chú đừng giận ông già tào lao - không biết là chú họ chi?". Nghe tôi trả lời là họ THÁI, cụ quá xúc động, đưa tay giữ chặt vai tôi kéo lại, như muốn nhìn thật kỹ. "- Rứa thì chú là con cháu cụ Quang thật rồi!" Nguyên trước đây ông nội tôi là Viện trưởng Viện Thái y - như kiểu Cục trưởng Cục Bảo vệ sức khỏe TW bây giờ ấy - (mà còn oai hơn nữa kia, vì trong chế độ phong kiến Nhà Vua rất trọng trí thức!) Ông nội tôi được sắc phong tước QUANG LỘC TỰ THIẾU KHANH, tứ phẩm hàm đường (- tương đương quan đầu tỉnh, ngạch cán bộ Vụ, Cục ngày nay, tra Wikipedia) nên mọi người tôn xưng là Cụ Quang. Tôi nhận đúng mình là đích tôn của Cụ. Thế là ông cụ quay ra bảo bà con dâu: -"Dẹp hàng họ, nghỉ bán bữa ni. Biểu mấy đứa chạy ù về xóm kêu mấy ông XXX bà YYY bên họ VĂN ra đây mau. Còn mấy cô chú, bữa ni nhất định phải ở lại làng, tui dắc vô tui chỉ cho coi, coi chi à: Coi công đức của ông nội chú đó!". Đã đến nước lôi cả ông nội tôi ra thì tôi ắt cũng phải "liều thân bồi đáp thôi". mà mình cũng đi chơi chứ đâu có công kia việc nọ đâu mà vội. Và cũng trong đêm đó, trong ngôi đình làng trang trọng mà âm u, mấy cụ già trong làng đã kể lại cho tôi câu chuyện sau đây.
... Đó là vào năm 1941. Cũng như nhiều gia đình trung lưu ở nội thành Huế, nhà tôi thường xuyên đặt hàng 1 ông người làng chài ngoài Cửa Thuận - tên thường gọi là ông Có - Văn Đức Có, sáng nào cũng gánh cá tươi chạy hết tốc lực một mạch suốt 12 km không nghỉ, vào bán cho từng nhà quen. Họ lấy cá từ những mẻ lưới khuya nên rạng sáng đã có cá về, thường là cá to và ngon nhất. Hôm đó, khi người nhà tôi ra mở cửa thì thấy ông Có gánh 1 bên là một thúng cá "mặn chặn" loại cá vụn con con chỉ ướp mắm hay nhà nghèo mới ăn, ra chợ ế ẩm khó bán - còn một bên thúng thì lại là một bé gái, hơn tôi3, 4 tuổi nhưng quắt queo như quả cà héo. Người làm nhà tôi là Ông Tính sẵng giọng hỏi: -" Bựa ni không có cá mú chi răng, mà còn rước cả con mắm tê đi mô rứa?" Ông Có rụt rè: -"Dạ biển động quá mà ghe xuồng thiếu bạn, bịnh hết không đi khơi được ... nhờ ông vô xin cho tôi gặp hai cụ (ông bà tôi) hay Thầy Cô (ba mẹ tôi) tôi có chuyện muốn thưa..." -"Thưa thưa cấy chi! Không có cá thì về. Ông, Bà, Thầy, Cô mô mà rảnh gặp mấy người!" Ông Có run rẩy, thất sắc, cô bé mặt tái xanh. Tôi đứng cạnh thấy không nỡ nên bảo ông Tính: -"Ông khoan đóng cổng, chờ tui vô hỏi Bà hay Mạ coi thử ra răng". Nói rồi, tôi vào nhà tìm bà nội tôi nói: -"Bà ơi, bữa ni ông Có lên mà không có cá thu cá chim chi mô. Mà bộ ông xanh xao vàng vọt lại gánh một chị quắt cà queo, bà ra coi có chi cho chị nớ ăn một chút, tội nghiệp quá!" Vừa lôi kéo bà tôi ra đến cổng thì cũng vừa gặp xe kéo ông tôi và chú Tâm mới về. Chú Tâm - Hồng Tâm - là đệ tử quan môn theo ông nội tôi học cả Nho, Y, Lý Số, theo "tiêu chuẩn" của ông nội, chú cũng được hưởng lương thơ lại (thư ký riêng) trong Viện Thái y.
Nhìn thấy 2 bố con ông Có trước cửa, ông tôi nói ngay: -" Tính đưa hai cha con vô nhà ngang, biểu thím Chút - thím nấu ăn trong nhà - dọn cơm nước chi đó cho họ ăn, sáng đến chừ chắc đói lắm rồi, ăn uống đi rồi tôi gặp hỏi chuyện".
Thì ra năm đó, năm 1941 có một đợt dich tả - Choléra - hoành hành dữ dội ở vùng ven biển Trị - Thiên, dân vừa đói vừa bênh, nhiều làng chết 7 còn 3. Làng ông Có cũng nhiều người bệnh chết, nhà ông có 4 người con, chỉ còn anh con trai 18 tuổi - đã đi bạn chài được - nhưng cũng vừa đổ bịnh, và cô bé Nghiêm 11 tuổi là sống sót còn thì bà vợ và 2 con đã "đi" rồi. Ông Có rơm rớm nước mắt: -" Mà ở nhà cũng không còn chi ăn, con ni ở nhà không đến 3 bảy 21 ngày nữa không bịnh cũng đói mà chết. Bữa ni con gánh cháu lên đây, cậy nhờ hai cụ với ông bà trồng cây phúc, cháu không dám nói bán con - thời buổi ni cho không ai thèm, dám mô nói chuyện bán - chỉ là trông chờ hai cụ và ông bà nuôi cháu như đứa ăn đứa ở trọn đời là cháu có phước rồi!" Ông tôi nói ngay: -" Chi mà đứa ăn đứa ở. Được rồi, coi như anh chị Hòa (ba mẹ tôi) coi như có thêm đứa con gái đầu lòng đi, nhận nó làm con nuôi. Nhưng này, vẫn cho cháu giữ họ Văn, sau này nếu muốn thì cứ về nhận tổ qui tông không ai làm khó".
Và thế là "tự nhiên" tôi có 1 bà chị gái hiền lành, tận tụy ở nhà tôi từ 1941, rồi sơ tán theo bà nội tôi về Nghệ An. Về sau ba mạ tôi gả chị cho một anh quê cùng xã, anh này rất hiền lành thật thà về sau đi bộ đội, được học trường sĩ quan và ra công tác rất tốt, Từ chú binh nhì, qua mấy chiến dịch Trung Hạ Lào, năm 1952 đã thăng lên đến cấp Thiếu tá nhưng năm 1954 đã hy sinh. Chị Nghiêm mới 35 tuổi, ở vậy nuôi nấng 3 đứa con đã trưởng thành, thằng cháu đầu được Ba mạ tôi đưa ra Hà Nội học, tốt nghiệp Đại học Nông Lâm, nay chị đã hàng đàn cháu chắt. Năm nay chị đã 90 tuổi mà còn đi lại được săm sắn, ngày giỗ ngày Tết mẹ con bà cháu vẫn "đội cỗ" sang nhà thờ họ Thái.
Nghe chuyện bệnh dịch - hồi đó truyền thông quá kém, chuyện xảy ra cách mươi lăm km mà ai cũng mù mờ - ông nội tôi bảo bà nôi và chú Tâm: -"Bà biểu đi mua cho tôi mấy chục cân gừng tươi. Tâm soạn hết "thuốc bánh chữa tả" dự trữ của nhà ra cho thầy, sáng mai con theo phương thuốc, ra tiệm bốc rồi về nhủ anh em xúm vào làm gấp 3, 400 liều. Anh Có ăn nghỉ rồi sáng mai sớm đưa thầy trò tôi về làng gấp, cứu bệnh như cứu hỏa. Tôi xuống xem tình hình thế nào sẽ nhắn tin ngay về để ở nhà chuẩn bị thêm dược phương rồi Tâm xuống giúp Thầy một tay". Nguyên trong nhà tôi vẫn có một phương thuốc gia truyền từ ông Cố 5 đời của tôi chuyên đặc trị tả, lỵ nhưng chưa bao giờ dùng số lượng lớn như thế. Chú Tâm đề nghị để chú ấy đi "tiền trạm" rồi báo tin về cho ông tôi. Nhưng ông nhất quyết không đồng ý và bảo:-" Dịch bệnh lớn thế này, quyết định phương án ban đầu cần nhanh chóng và rất chính xác. Thầy không phải không trọng tấm lòng của con nhưng kinh nghiệm và học vấn con chưa đủ; những lúc nước sôi lửa bỏng thế này, sai một ly, chậm một lúc là có thể mất đi hàng chục hàng trăm sinh mạng con ạ".
Thế rồi sáng mai ông và 2 đệ tử khăn gói lên đường theo ông Có về Cửa Thuận. Hai hôm sau ông Có lên đưa lá thư dặn dò chú Tâm lên Viện thông báo Ông vắng mặt một thời gian. (Thực ra tiếng là làm "Quan" nhưng ông tôi rất thoải mái, hàng ngày chỉ có chú Tâm "đi làm" trong Viện, có chuyện gì cần thì cho người tìm báo cho ông còn ông thì chỉ cả ngày đi thăm thú bệnh nhân, bạn bè... thường kéo cả "đích tôn thừa trọng" là tôi đây đi làm thơ, đối chữ với mấy bạn đồng liêu...) Trong thư ông còn dặn bổ sung thuốc thang rồi chú Tâm dẫn theo 4 sư đệ nữa lên đường đi "tiếp viện". Bà nội tôi ra sức nhét thêm đồ ăn "bồi dưỡng" cho ông... và lúc chiếc xe kéo lăn bánh, bà đứng thừ ra một lúc lâu, đôi mắt nhăn nheo ứa lệ: Hình như từ khi tôi bắt đầu hiểu biết, chưa thấy bao giờ bà khóc. Vài hôm sau, mấy bà quan to to - mệnh phụ phu nhân cả - đều là bệnh nhân cũ của ông tôi - kéo nhau đến nhà hỏi han và tự động tổ chức nhau quyên góp tiền nong, thứ thì giao cho đám đệ tử của ông nội tôi mua nguyên liệu, dược phẩm chế thuốc, thứ thì mua đồ ăn cử người mang về tận nơi cứu trợ.
Ông nội tôi đi biệt hàng tháng trời, dăm bảy hôm có đoàn cứu trợ về thì gửi lá thư mươi dòng, lại viết bằng chữ Hán nên có mỗi Ba tôi đọc được - lần nào bà nội tôi cũng cứ hỏi gặng mãi vì sợ nội dung có tin không lành mà Ba tôi dấu: Thật là tội nghiệp. Ba đứa em tôi còn quá bé, cô em kề tôi mới lên 5, một cô lên 3 còn 1 anh cu con nữa mới lọt lòng chưa biết gì. Chỉ có tôi và chi Nghiêm suốt ngày thẫn thờ, đi học về là tôi túm lấy chị hỏi : "Hôm nay có tin gì của Ông không?".
Gần 2 tháng sau ông nội tôi mới quay về. Một tháng sau nữa, một hôm có một đoàn người, da dẻ đen sạm cháy nắng, cứng quèo trong bộ áo khăn cả năm có lẽ chỉ mặc 1 lần (có người chắc chưa bao giờ mặc), Hai người xỏ đòn khiêng một con cá thu (hay cá ngừ gì đó), đuôi dài phết đất, chắc đến hơn vài chục kg, một gánh mực tươi...tiến vào đứng trong sân nhà tôi. Ba ông cụ râu bạc áo thụng tiến lên phủ phục xuống bậc thềm nhà tôi dập đầu: -"Tạ ơn Thầy, không có Thầy thì làng con đã bị xóa sổ..."
Tôi nhắc đến buổi lễ tạ ơn đầy xúc động đó thì ông chủ quán nói luôn: -"Nhưng hồi đó chú còn bé chưa biết, hôm đó chúng tôi còn xin được mạn phép Cụ nhà làm một việc nữa mà bây giờ tôi mới có dịp được mời cháu đích tôn của cụ xem lại..."
Vài cụ nữa cùng bước lên, dẫn tôi vào ngôi đình cổ kính: một ngôi đình 5 gian bề thế đứng hiên ngang hướng ra biển rộng. Trong hậu cung, trên bệ thờ trang nghiêm, cạnh bài vị thành hoàng Làng, có thêm một bài vị nữa tuy cũng đã cũ nhưng còn mới hơn tấm kia rất nhiều. Trên tấm bài vị đó gho rõ ràng Thụy danh, Tự hiệu của Ông nội tôi: THÁI CÔNG - CỔ VĂN NHÂN chi linh vị. (Ông nội tôi thụy danh là TỐ nhưng để tỏ lòng kính trọng, người ta ghi "chiết tự" chữ TỐ thành 3 bộ ghép lại là bộ Nhân, bộ Cổ và bộ Văn - 古文仁 - cái này bạn nào học Hán tự mới rõ, các bạn học tiếng Hoa giản thể bây giờ không hiểu đâu)
"-Sau cơn đại dịch để ghi nhớ công đức cụ Quang đã tái sinh cho làng, hội đồng làng nhất trí đồng lòng và cũng đã tâu xin bè trên cho phép thỉnh cụ Quang về làm ĐỒNG THÀNH HOÀNG cho làng chúng tôi.
Tôi đứng ngẩn ngơ vuốt ve tấm bài vị, tưởng như được vuốt lại chòm râu thân thiết của Ông tôi.
Đêm đó về .... và cũng nhiều đêm nữa, tôi không ngủ được... vì thấy mình còn quá hổ thẹn với tiền nhân!