A message sending method, wherein the method comprises: obtaining, by a transmit end, to-be-sent target data, wherein the target data is data to be sent in a current sending period after a first piece of data is sent; randomly generating a tail node in the hash chain; performing a hash operation on a node h i-1 in the hash chain, to obtain a node h i in the hash chain, wherein i = 1, 2,..., or N, N + 1 is the quantity of pieces of data allowed to be sent in the current sending period, a node h 0 is the tail node, and a node h N is a head node in the hash chain; obtaining, by the transmit end from the hash chain based on a sending sequence number of the target data in the current sending period, a node corresponding to the target data, wherein a quantity of nodes comprised in the hash chain is equal to the quantity of pieces of data allowed to be sent in the current sending period, wherein the head node corresponds to the first piece of data, wherein nodes corresponding to all data sent by the transmit end after the first piece of data is sent are consecutive nodes and wherein the obtaining, from a hash chain based on a sending sequence number of the target data in the current sending period, a node corresponding to the target data comprises: when determining, based on the sending sequence number of the target data, that the target data is the second piece of data to be sent in the current sending period, obtaining the head node in the hash chain as the node corresponding to the target data; or when determining, based on the sending sequence number of the target data, that the target data is data to be sent after the second piece of data, obtaining a fourth node that is located before a third node and that is adjacent to the third node in the hash chain, and using the fourth node as the node corresponding to the target data, wherein the third node is a node that is sent last time in the hash chain; performing, by the transmit end, a hash operation on the target data and the node corresponding to the target data, to obtain a first verification code, wherein the first verification code is used by a receive end to verify the target data; and sending, by the transmit end, a first message, wherein the first message comprises the target data, the node corresponding to the target data, the first verification code, and the sending sequence number of the target data. obtaining, by a transmit end, to-be-sent target data, wherein the target data is data to be sent in a current sending period after a first piece of data is sent; randomly generating a tail node in the hash chain; performing a hash operation on a node h i-1 in the hash chain, to obtain a node h i in the hash chain, wherein i = 1, 2,..., or N, N + 1 is the quantity of pieces of data allowed to be sent in the current sending period, a node h 0 is the tail node, and a node h N is a head node in the hash chain; obtaining, by the transmit end from the hash chain based on a sending sequence number of the target data in the current sending period, a node corresponding to the target data, wherein a quantity of nodes comprised in the hash chain is equal to the quantity of pieces of data allowed to be sent in the current sending period, wherein the head node corresponds to the first piece of data, wherein nodes corresponding to all data sent by the transmit end after the first piece of data is sent are consecutive nodes and wherein the obtaining, from a hash chain based on a sending sequence number of the target data in the current sending period, a node corresponding to the target data comprises: when determining, based on the sending sequence number of the target data, that the target data is the second piece of data to be sent in the current sending period, obtaining the head node in the hash chain as the node corresponding to the target data; or when determining, based on the sending sequence number of the target data, that the target data is data to be sent after the second piece of data, obtaining a fourth node that is located before a third node and that is adjacent to the third node in the hash chain, and using the fourth node as the node corresponding to the target data, wherein the third node is a node that is sent last time in the hash chain; performing, by the transmit end, a hash operation on the target data and the node corresponding to the target data, to obtain a first verification code, wherein the first verification code is used by a receive end to verify the target data; and sending, by the transmit end, a first message, wherein the first message comprises the target data, the node corresponding to the target data, the first verification code, and the sending sequence number of the target data.