<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.0 20120330//EN" "JATS-journalpublishing1.dtd"><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">INFORMATICA</journal-id>
<journal-title-group><journal-title>Informatica</journal-title></journal-title-group>
<issn pub-type="epub">1822-8844</issn>
<issn pub-type="ppub">0868-4952</issn>
<issn-l>0868-4952</issn-l>
<publisher>
<publisher-name>Vilnius University</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">INFOR411</article-id>
<article-id pub-id-type="doi">10.15388/20-INFOR411</article-id>
<article-categories><subj-group subj-group-type="heading">
<subject>Research Article</subject></subj-group></article-categories>
<title-group>
<article-title>A Reversible Hiding Technique Using LSB Matching for Relational Databases</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name><surname>Hwang</surname><given-names>Min-Shiang</given-names></name><email xlink:href="mshwang@asia.edu.tw">mshwang@asia.edu.tw</email><xref ref-type="aff" rid="j_infor411_aff_001">1</xref><xref ref-type="aff" rid="j_infor411_aff_002">2</xref><bio>
<p><bold>M.-S. Hwang</bold> received MS in industrial engineering from National Tsing Hua University, Taiwan in 1988; and PhD degree in computer and information science from National Chiao Tung University, Taiwan in 1995. He was a professor and chairman of the Department of Management Information Systems, NCHU, during 2003–2009. He was also a visiting professor at the University of California (UC), Riverside and UC. Davis (USA) during 2009–2010. He was a distinguished professor of Department of Management Information Systems, NCHU, during 2007–2011. He obtained the 1997, 1998, 1999, 2000, and 2001 Excellent Research Award of National Science Council (Taiwan). Dr. Hwang was a dean of College of Computer Science, Asia University (AU), Taichung, Taiwan. He is currently a chair professor with Department of Computer Science and Information Engineering, AU. His current research interests include information security, electronic commerce, database and data security, cryptography, image compression, and mobile computing. Dr. Hwang has published over 300+ articles on the above research fields in international journals.</p></bio>
</contrib>
<contrib contrib-type="author">
<name><surname>Xie</surname><given-names>Ming-Ru</given-names></name><xref ref-type="aff" rid="j_infor411_aff_003">3</xref><bio>
<p><bold>M.-R. Xie</bold> received his MS in management information systems from National Chung Hsing University, Taiwan in 2016. He had worked in IT industry in Taiwan for ten years. He is currently a PhD degree student at the Department of Computer Science, National Chiao Tung University, Taiwan. His current research interests include database security, information security, and digital image techniques.</p></bio>
</contrib>
<contrib contrib-type="author">
<name><surname>Wu</surname><given-names>Chia-Chun</given-names></name><email xlink:href="ccwu0918@nqu.edu.tw">ccwu0918@nqu.edu.tw</email><xref ref-type="aff" rid="j_infor411_aff_004">4</xref><xref ref-type="corresp" rid="cor1">∗</xref><bio>
<p><bold>C.-C. Wu</bold> received a PhD degree from the Department of Computer Science and Engineering, National Chung-Hsing University, Taichung, Taiwan, in 2011. He is currently an associate professor at the Department of Industrial Engineering and Management, National Quemoy University, Kinmen County, Taiwan. His current research interests include database security, secret image sharing, mobile applications development, and digital image techniques.</p></bio>
</contrib>
<aff id="j_infor411_aff_001"><label>1</label>Department of Computer Science and Information Engineering, <institution>Asia University</institution>, Taichung 41354, <country>Taiwan</country></aff>
<aff id="j_infor411_aff_002"><label>2</label>Department of Medical Research, China Medical University Hospital, <institution>China Medical University</institution>, Taichung 404, <country>Taiwan</country></aff>
<aff id="j_infor411_aff_003"><label>3</label>Department of Computer Science, <institution>National Chiao Tung University</institution>, <country>Taiwan</country></aff>
<aff id="j_infor411_aff_004"><label>4</label>Department of Industrial Engineering and Management, <institution>National Quemoy University</institution>, Kinmen 892, <country>Taiwan</country></aff>
</contrib-group>
<author-notes>
<corresp id="cor1"><label>∗</label>Corresponding author.</corresp>
</author-notes>
<pub-date pub-type="ppub"><year>2020</year></pub-date>
<pub-date pub-type="epub"><day>6</day><month>5</month><year>2020</year></pub-date><volume>31</volume><issue>3</issue><fpage>481</fpage><lpage>497</lpage>
<history>
<date date-type="received"><month>7</month><year>2018</year></date>
<date date-type="accepted"><month>3</month><year>2020</year></date>
</history>
<permissions><copyright-statement>© 2020 Vilnius University</copyright-statement><copyright-year>2020</copyright-year>
<license license-type="open-access" xlink:href="http://creativecommons.org/licenses/by/4.0/">
<license-p>Open access article under the <ext-link ext-link-type="uri" xlink:href="http://creativecommons.org/licenses/by/4.0/">CC BY</ext-link> license.</license-p></license></permissions>
<abstract>
<p>Data hiding technique is an important multimedia security technique and has been applied to many domains, for example, relational databases. The existing data hiding techniques for relational databases cannot restore raw data after hiding. The purpose of this paper is to propose the first reversible hiding technique for the relational database. In hiding phase, it hides confidential messages into a relational database by the LSB (Least-Significant-Bit) matching method for relational databases. In extraction and restoration phases, it gets the confidential messages through the LSB and LSB matching method for relational databases. Finally, the averaging method is used to restore the raw data. According to the experiments, our proposed technique meets data hiding requirements. It not only enables to recover the raw data, but also maintains a high hiding capacity. The complexity of our algorithms shows their efficiencies.</p>
</abstract>
<kwd-group>
<label>Key words</label>
<kwd>reversible data hiding</kwd>
<kwd>database security</kwd>
<kwd>right protection</kwd>
<kwd>ownership protection</kwd>
</kwd-group>
<funding-group>
<award-group>
<funding-source xlink:href="https://doi.org/10.13039/501100001868">National Science Council</funding-source>
<award-id> MOST 108-2410-H-468-023</award-id>
<award-id>MOST 108-2622-8-468-001-TM1</award-id>
</award-group>
<funding-statement>This study was supported by the National Science Council of Taiwan under grant MOST 108-2410-H-468-023 and MOST 108-2622-8-468-001-TM1. </funding-statement>
</funding-group>
</article-meta>
</front>
<body>
<sec id="j_infor411_s_001">
<label>1</label>
<title>Introduction</title>
<p>The data hiding technique is a kind of multimedia security technique. It hides secret information into another unimportant original data, and the original data is still meaningful. Because the original data is not gibberish, the technique could defraud the adversary and send the secret information. Data hiding technology can be grouped into non-reversible and reversible data hiding schemes (Chen <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor411_ref_005">2020</xref>; Chen and Guo, <xref ref-type="bibr" rid="j_infor411_ref_006">2020</xref>; Chen Y. <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor411_ref_007">2020</xref>). The image of the former will be completely damaged and cannot be restored after hiding the secret information. However, the image of the latter, after retrieving the secret information, can still be recovered to the original image. The data hiding technique has been applied to many domains, such as videos, images for medicine (Lu <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor411_ref_018">2015a</xref>), digital sounds, etc. An interesting application of this technique is applied in the relational database.</p>
<p>IBM’s first relational database product for business purposes was released in 1981, and the relational database has become an important tool for enterprises and the government agencies to save data today. Enterprises use it to save employee data, customer data, product data, etc. The government uses it to save financial data, tax data, judicature data, etc. Original relational databases only save data; afterwards, Data Warehouse and Data Mining techniques make us analyse the relational database and find out the relationships among data, and then provide analytical results to enterprises for decision-making (Ke and Wang, <xref ref-type="bibr" rid="j_infor411_ref_014">2006</xref>). Therefore, data has become an important resource for enterprises. Because of the importance of data, Taiwan has implemented Personal Data Protection Act in 2012; and thus the question is how to protect data from being stolen by someone else. We discuss security issues in the relational databases in the next section.</p>
<p>The data saved in relational databases is digital data, and it is the same as videos and images, which can all be copied easily. After the Internet has appeared, digital data can be delivered easily to others, resulting that the problem of data theft is becoming more and more serious. Relational databases have an authority control mechanism; only legitimate users can access the data in the database, and thereby it can prevent data from being stolen by unauthorized users. However, if legitimate users steal data and sell it to B, and then B asserts the data belongs to him, how can we prove who owns the data? The ownership information in the relational database can prove to whom these data belong.</p>
<p>Furthermore, let us consider another case; a data owner needs data mining service, so he transmits the relational database to a data mining company (Kamran <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor411_ref_013">2013</xref>). When he transmits, the attacker may steal and tamper the relational database, so the recipient will receive the tampered relational database. When it happens, how can we prove the relational database is original, and the data is not tampered? Tamper proofing can help us.</p>
<p>A kind of technique, called watermarking relational databases, can achieve above-mentioned purposes. Its concept comes from the data hiding technique. Its purpose is to hide invisible digital watermark into relational databases for ownership protection and tamper proofing (Agrawal and Kiernan, <xref ref-type="bibr" rid="j_infor411_ref_002">2002</xref>; Iftikhar <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor411_ref_012">2015</xref>; Ke and Wang, <xref ref-type="bibr" rid="j_infor411_ref_014">2006</xref>).</p>
<p>This paper is organized as follows: Section <xref rid="j_infor411_s_002">2</xref> will briefly describe the development history of watermark relational databases. We carefully explain our proposed method in Section <xref rid="j_infor411_s_003">3</xref>. The experimental results are given in Section <xref rid="j_infor411_s_008">4</xref>. Finally, the conclusion summarizes the results obtained and proposes future work for this article.</p>
</sec>
<sec id="j_infor411_s_002">
<label>2</label>
<title>Related Works</title>
<p>Using a digital watermark to prove copyright of digital media has been a well-known technique. The first ones who proposed a new idea of using a digital watermark to secure a database is Khanna and Zane in 2000 (Khanna and Zane, <xref ref-type="bibr" rid="j_infor411_ref_015">2000</xref>), and then Rakesh Agrawal and Jerry Kiernan proposed the first scheme for Watermarking relational databases in 2002 (Agrawal and Kiernan, <xref ref-type="bibr" rid="j_infor411_ref_002">2002</xref>). Their scheme uses a hash function to pick out the LSB (Least-Significant-Bit) of some tuples they want to mark, and then they embed the watermark by setting the selected LSB. If the hash function value of the concatenation of the private key and the primary key is even, the selected LSB will be set to 0; otherwise the selected LSB will be set to 1.</p>
<p>According to the scientific studies of Bhesaniya <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor411_ref_003">2014</xref>) Dwivedi <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor411_ref_008">2014</xref>) Mohanpurkar and Joshi (<xref ref-type="bibr" rid="j_infor411_ref_023">2011</xref>), the Watermarking relational databases can include two kinds of databases: data distortion watermarking relational databases and data distortion-free watermarking relational databases. Agrawal’s and Kiernan’s scheme is improved by embedding fingerprints instead of meaningless bits in Li <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor411_ref_016">2003</xref>). Mehta and Rao proposed to embed the digital watermark in two attributes, namely the LSB of the digital attribute and the SS of the date attribute (Mehta and Rao, <xref ref-type="bibr" rid="j_infor411_ref_020">2011</xref>). Hanyurwimfura <italic>et al.</italic> proposed a digital watermark could be expressed by the horizontal shifting position of a non-numeric attribute of selected tuples (Hanyurwimfura <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor411_ref_011">2010</xref>). Melkundi <italic>et al.</italic> proposed embedding a digital watermark into a textual attribute and a numeric attribute, and finally used Levenshtein Distance to verify the extracted watermark and the original watermark (Melkundi and Chandankhede, <xref ref-type="bibr" rid="j_infor411_ref_021">2015</xref>). In Kamran <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor411_ref_013">2013</xref>), a high robustness and distortion minimization scheme for data distortion watermarking relational databases was proposed. This scheme first divides the data set into several data partitions, and then uses thresholds and hash functions to select tuples for embedding the watermark. If the embedded watermark bit is 1, the selected tuple value is added to the percentage value; if the embedded watermark bit is 0, the selected tuple value is subtracted from the percentage value. Experimental results show that this scheme can not only resist six attacks, but also minimize data distortion.</p>
<p>In the data distortion watermarking relational database, Zhang <italic>et al.</italic> proposed a subdomain in 2006, called the reversible watermarking relational database (Zhang <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor411_ref_028">2006</xref>). They use histogram extension techniques to implement a reversible watermarking scheme. The idea of reversible watermarking relational databases was derived from the image because the data in the database will be distorted after embedding a digital watermark. However, for some data, for example, categorical data, it cannot tolerate any distortion; otherwise, it will become useless (Li <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor411_ref_017">2004</xref>); therefore, we need this technique to restore raw data in the database. Gupta and Pieprzyk proposed a reversible blind watermarking scheme that can resist secondary watermarking attacks (Gupta and Pieprzyk, <xref ref-type="bibr" rid="j_infor411_ref_010">2009</xref>). This scheme will analyse the features and select the appropriate watermark features, then use the genetic algorithm (GA) to generate the watermark. Therefore, the watermark will evolve from a random binary string to the best watermark information string, and obtain the best fitness value <inline-formula id="j_infor411_ineq_001"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">β</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(\beta )$]]></tex-math></alternatives></inline-formula>. The best fitness value is used to embed the watermark bit and ensure that the data quality is not affected. Experimental results show that RRW can retrieve the original data and watermark after malicious attacks.</p>
<p>The next domain we want to introduce is data distortion-free watermarking relational databases. Its main concept is to use the function of the database to generate a watermark, and the watermark will not be directly embedded in the database. Therefore, this technology can maintain the integrity of the original data without causing data distortion. Li <italic>et al.</italic> proposed the first scheme in 2004 (Li <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor411_ref_017">2004</xref>). Their scheme generates a fragile watermark based on the group’s data order (ascending order means watermark bit = 0; descending order means watermark bit = 1). The fragile watermark is used to detect any modification in a relational database. In 2014, Camara <italic>et al.</italic> proposed a fragile watermarking technology that generates watermarks based on data partitions in a relational database (Camara <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor411_ref_004">2014</xref>). Encrypt the watermark and record it in a certificate authority. A certification authority (CA) is a trusted party that can detect suspicious databases. When we want to validate the database, we first generate a watermark from the data partition and then compare the watermark with the original watermark retrieved from the CA.</p>
<p>Our proposed scheme is inspired from Lu <italic>et al.</italic>’s data hiding technology (Lu <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor411_ref_018">2015a</xref>, <xref ref-type="bibr" rid="j_infor411_ref_019">2015b</xref>). They are based on the LSB matching method to devise a dual imaging-based reversible hiding technique. First, it copies the original image into the same images. By LSB matching method, it embeds confidential messages into two image pixel values, respectively. Lastly, through the LSB and LSB matching methods, it will get the confidential messages. Through the averaging method, it will restore the original image.</p>
</sec>
<sec id="j_infor411_s_003">
<label>3</label>
<title>The Proposed Reversible Data Hiding Scheme for Relational Databases</title>
<sec id="j_infor411_s_004">
<label>3.1</label>
<title>Basic Concept</title>
<p>In this section, we propose a new reversible data hiding technique using LSB matching method for relational databases. The main difference between the proposed method and Lu <italic>et al.</italic>’s method is that a confidential message is hidden in the digital attributes of a relational database, not a pixel in an image. After hiding confidential messages (for example, the digital watermark of the database owner) into a relational database, the data in the database will be distorted, but the proposed method can restore the original data. Because the research is not robust enough to resist malicious attacks, it is a reversible data hiding technique for relational databases. Moreover, Section <xref rid="j_infor411_s_008">4</xref> also proves the proposed technique is a linear time algorithm (the running time linearly increases as the size of a data set); therefore, our technique is suitable for relational databases with a large amount of data.</p>
<p>Database relation D is the original data set with primary key attributes <italic>P</italic> and <italic>n</italic> attributes, whose scheme is <inline-formula id="j_infor411_ineq_002"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">P</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal">,</mml:mo><mml:mo>…</mml:mo><mml:mo mathvariant="normal">,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">n</mml:mi><mml:mo>−</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$(P,{A_{0}},\dots ,{A_{n-1}})$]]></tex-math></alternatives></inline-formula>. Table <xref rid="j_infor411_tab_001">1</xref> gives an overview of D. Therefore, this method can hide all numeric attributes in D. However, to simplify the description, only one numerical attribute <inline-formula id="j_infor411_ineq_003"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${A_{i}}$]]></tex-math></alternatives></inline-formula> is selected to explain the method.</p>
<table-wrap id="j_infor411_tab_001">
<label>Table 1</label>
<caption>
<p>The overview of D.</p>
</caption>
<table>
<thead>
<tr>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Tuple index</td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"><italic>P</italic></td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"><inline-formula id="j_infor411_ineq_004"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${A_{0}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"><inline-formula id="j_infor411_ineq_005"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${A_{i}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"><inline-formula id="j_infor411_ineq_006"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${A_{i2}}$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin"><inline-formula id="j_infor411_ineq_007"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">n</mml:mi><mml:mo>−</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${A_{n-1}}$]]></tex-math></alternatives></inline-formula></td>
</tr>
</thead>
<tbody>
<tr>
<td style="vertical-align: top; text-align: left"><italic>j</italic></td>
<td style="vertical-align: top; text-align: left"/>
<td style="vertical-align: top; text-align: left"/>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor411_ineq_008"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i}})$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor411_ineq_009"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i2}})$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left"/>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor411_ineq_010"><alternatives>
<mml:math><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[$j+1$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"/>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"/>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor411_ineq_011"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i}})$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor411_ineq_012"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i2}})$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"/>
</tr>
</tbody>
</table>
</table-wrap>
<p>Figure <xref rid="j_infor411_fig_001">1</xref> is the LSB matching method of relational database inspired by Mielikainen (<xref ref-type="bibr" rid="j_infor411_ref_022">2006</xref>). This steganography is designed to hide binary messages into tuple values in a relational database.</p>
<fig id="j_infor411_fig_001">
<label>Fig. 1</label>
<caption>
<p>LSB matching method for relational databases.</p>
</caption>
<graphic xlink:href="infor411_g001.jpg"/>
</fig>
<p>Assume that the encrypted confidential message (CM) is a binary number, <inline-formula id="j_infor411_ineq_013"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[$s1$]]></tex-math></alternatives></inline-formula> is the first bit of the CM, <inline-formula id="j_infor411_ineq_014"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>2</mml:mn></mml:math>
<tex-math><![CDATA[$s2$]]></tex-math></alternatives></inline-formula> is the second bit of the CM, <inline-formula id="j_infor411_ineq_015"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>3</mml:mn></mml:math>
<tex-math><![CDATA[$s3$]]></tex-math></alternatives></inline-formula> is the third bit of the CM, and <inline-formula id="j_infor411_ineq_016"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>4</mml:mn></mml:math>
<tex-math><![CDATA[$s4$]]></tex-math></alternatives></inline-formula> is the fourth bit of the CM; <italic>i</italic> is the attribute index; <italic>j</italic> is the tuple index. First, calculate the LSB of the <inline-formula id="j_infor411_ineq_017"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i}})$]]></tex-math></alternatives></inline-formula>. If the LSB of the <inline-formula id="j_infor411_ineq_018"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i}})$]]></tex-math></alternatives></inline-formula> is equal to <inline-formula id="j_infor411_ineq_019"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[$s1$]]></tex-math></alternatives></inline-formula>, go to the second layer <inline-formula id="j_infor411_ineq_020"><alternatives>
<mml:math><mml:mi mathvariant="italic">F</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo mathvariant="normal">,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mi mathvariant="italic">s</mml:mi><mml:mn>2</mml:mn></mml:math>
<tex-math><![CDATA[$F({\mathit{tuple}_{j}}({A_{i}}),{\mathit{tuple}_{j+1}}({A_{i}}))=s2$]]></tex-math></alternatives></inline-formula>. Otherwise, go to the second layer <inline-formula id="j_infor411_ineq_021"><alternatives>
<mml:math><mml:mi mathvariant="italic">F</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>−</mml:mo><mml:mn>1</mml:mn><mml:mo mathvariant="normal">,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mi mathvariant="italic">s</mml:mi><mml:mn>2</mml:mn></mml:math>
<tex-math><![CDATA[$F({\mathit{tuple}_{j}}({A_{i}})-1,{\mathit{tuple}_{j+1}}({A_{i}}))=s2$]]></tex-math></alternatives></inline-formula>. In the second layer, <inline-formula id="j_infor411_ineq_022"><alternatives>
<mml:math><mml:mi mathvariant="italic">F</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mo>·</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$F(\cdot )$]]></tex-math></alternatives></inline-formula> is used to check whether the value of <inline-formula id="j_infor411_ineq_023"><alternatives>
<mml:math><mml:mi mathvariant="italic">F</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mo>·</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$F(\cdot )$]]></tex-math></alternatives></inline-formula> is the same as <inline-formula id="j_infor411_ineq_024"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>2</mml:mn></mml:math>
<tex-math><![CDATA[$s2$]]></tex-math></alternatives></inline-formula>. In layer 3, pretend tuple values are generated. Here, <inline-formula id="j_infor411_ineq_025"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i}})$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor411_ineq_026"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i}})$]]></tex-math></alternatives></inline-formula> are the original tuple values; <inline-formula id="j_infor411_ineq_027"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mi>‘</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}‘({A_{i}})$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor411_ineq_028"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mi>‘</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}‘({A_{i}})$]]></tex-math></alternatives></inline-formula> pretend to be tuple values after hiding <inline-formula id="j_infor411_ineq_029"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[$s1$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor411_ineq_030"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>2</mml:mn></mml:math>
<tex-math><![CDATA[$s2$]]></tex-math></alternatives></inline-formula>. The situations are explained as follows:</p>
<def-list><def-item><term><bold>Situation A:</bold></term><def>
<p>When <inline-formula id="j_infor411_ineq_031"><alternatives>
<mml:math><mml:mi mathvariant="italic">LSB</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mi mathvariant="italic">s</mml:mi><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[$\mathit{LSB}({\mathit{tuple}_{j}}({A_{i}}))=s1$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor411_ineq_032"><alternatives>
<mml:math><mml:mi mathvariant="italic">F</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mo>·</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mi mathvariant="italic">s</mml:mi><mml:mn>2</mml:mn></mml:math>
<tex-math><![CDATA[$F(\cdot )=s2$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_033"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i}})$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor411_ineq_034"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i}})$]]></tex-math></alternatives></inline-formula> are unchanged.</p></def></def-item><def-item><term><bold>Situation B:</bold></term><def>
<p>When <inline-formula id="j_infor411_ineq_035"><alternatives>
<mml:math><mml:mi mathvariant="italic">LSB</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mi mathvariant="italic">s</mml:mi><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[$\mathit{LSB}({\mathit{tuple}_{j}}({A_{i}}))=s1$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor411_ineq_036"><alternatives>
<mml:math><mml:mi mathvariant="italic">F</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mo>·</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo stretchy="false">≠</mml:mo><mml:mi mathvariant="italic">s</mml:mi><mml:mn>2</mml:mn></mml:math>
<tex-math><![CDATA[$F(\cdot )\ne s2$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_037"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i}})$]]></tex-math></alternatives></inline-formula> is unchanged and <inline-formula id="j_infor411_ineq_038"><alternatives>
<mml:math><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msubsup><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}^{\prime }_{j+1}}({A_{i}})={\mathit{tuple}_{j+1}}({A_{i}})+1$]]></tex-math></alternatives></inline-formula>.</p></def></def-item><def-item><term><bold>Situation C:</bold></term><def>
<p>When <inline-formula id="j_infor411_ineq_039"><alternatives>
<mml:math><mml:mi mathvariant="italic">LSB</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo stretchy="false">≠</mml:mo><mml:mi mathvariant="italic">s</mml:mi><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[$\mathit{LSB}({\mathit{tuple}_{j}}({A_{i}}))\ne s1$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor411_ineq_040"><alternatives>
<mml:math><mml:mi mathvariant="italic">F</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mo>·</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mi mathvariant="italic">s</mml:mi><mml:mn>2</mml:mn></mml:math>
<tex-math><![CDATA[$F(\cdot )=s2$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_041"><alternatives>
<mml:math><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msubsup><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>−</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}^{\prime }_{j}}({A_{i}})={\mathit{tuple}_{j}}({A_{i}})-1$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor411_ineq_042"><alternatives>
<mml:math><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msubsup><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}^{\prime }_{j+1}}({A_{i}})$]]></tex-math></alternatives></inline-formula> is unchanged.</p></def></def-item><def-item><term><bold>Situation D:</bold></term><def>
<p>When <inline-formula id="j_infor411_ineq_043"><alternatives>
<mml:math><mml:mi mathvariant="italic">LSB</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo stretchy="false">≠</mml:mo><mml:mi mathvariant="italic">s</mml:mi><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[$\mathit{LSB}({\mathit{tuple}_{j}}({A_{i}}))\ne s1$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor411_ineq_044"><alternatives>
<mml:math><mml:mi mathvariant="italic">F</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mo>·</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo stretchy="false">≠</mml:mo><mml:mi mathvariant="italic">s</mml:mi><mml:mn>2</mml:mn></mml:math>
<tex-math><![CDATA[$F(\cdot )\ne s2$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_045"><alternatives>
<mml:math><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msubsup><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}^{\prime }_{j}}({A_{i}})={\mathit{tuple}_{j}}({A_{i}})+1$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor411_ineq_046"><alternatives>
<mml:math><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msubsup><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}^{\prime }_{j+1}}({A_{i}})$]]></tex-math></alternatives></inline-formula> is unchanged.</p></def></def-item></def-list>
<p>Through the LSB matching method of the relational database, <inline-formula id="j_infor411_ineq_047"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mi>‘</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}‘({A_{i}})$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor411_ineq_048"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mi>‘</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}‘({A_{i}})$]]></tex-math></alternatives></inline-formula> are embedded in the secret messages <inline-formula id="j_infor411_ineq_049"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[$s1$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor411_ineq_050"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>2</mml:mn></mml:math>
<tex-math><![CDATA[$s2$]]></tex-math></alternatives></inline-formula>, and <inline-formula id="j_infor411_ineq_051"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mi>‘</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}‘({A_{i2}})$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor411_ineq_052"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mi>‘</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}‘({A_{i2}})$]]></tex-math></alternatives></inline-formula> are embedded in the secret messages <inline-formula id="j_infor411_ineq_053"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>3</mml:mn></mml:math>
<tex-math><![CDATA[$s3$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor411_ineq_054"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>4</mml:mn></mml:math>
<tex-math><![CDATA[$s4$]]></tex-math></alternatives></inline-formula>. Table <xref rid="j_infor411_tab_002">2</xref> shows when the secret messages are hidden in two pairs of tuple values at the same time through the LSB matching method of a relational database, and under what circumstances can the two pairs of tuple values be restored to the original tuple values. 0 means that the tuple value does not need to be modified; +1 means that the tuple value is increased by 1; −1 means that the tuple value is subtracted by 1. We use the symbol <italic>x</italic> to indicate that the recovered tuple value calculated by the averaging method is different from the original tuple value. To handle the case where the tuple value cannot be restored, we modify Table <xref rid="j_infor411_tab_002">2</xref> and describe the new modification rules for relational databases in Table <xref rid="j_infor411_tab_003">3</xref>.</p>
<table-wrap id="j_infor411_tab_002">
<label>Table 2</label>
<caption>
<p>The rule table for relational databases.</p>
</caption>
<table>
<thead>
<tr>
<td rowspan="3" style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Cases</td>
<td colspan="4" style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">The tuple value modification statuses</td>
<td colspan="2" style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Original tuple values restoration statuses</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor411_ineq_055"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i}})$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor411_ineq_056"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i}})$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor411_ineq_057"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i2}})$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor411_ineq_058"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i2}})$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor411_ineq_059"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i}})$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor411_ineq_060"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i}})$]]></tex-math></alternatives></inline-formula></td>
</tr>
</thead>
<tbody>
<tr>
<td style="vertical-align: top; text-align: left">1</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left"/>
<td style="vertical-align: top; text-align: left"/>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">2</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left">+1</td>
<td style="vertical-align: top; text-align: left"/>
<td style="vertical-align: top; text-align: left"/>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">3</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left">−1</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left">x</td>
<td style="vertical-align: top; text-align: left"/>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">4</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left">+1</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left"/>
<td style="vertical-align: top; text-align: left"/>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">5</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left">+1</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left"/>
<td style="vertical-align: top; text-align: left"/>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">6</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left">+1</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left">+1</td>
<td style="vertical-align: top; text-align: left"/>
<td style="vertical-align: top; text-align: left">x</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">7</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left">+1</td>
<td style="vertical-align: top; text-align: left">−1</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left">x</td>
<td style="vertical-align: top; text-align: left"/>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">8</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left">+1</td>
<td style="vertical-align: top; text-align: left">+1</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left"/>
<td style="vertical-align: top; text-align: left"/>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">9</td>
<td style="vertical-align: top; text-align: left">−1</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left">x</td>
<td style="vertical-align: top; text-align: left"/>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">10</td>
<td style="vertical-align: top; text-align: left">−1</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left">+1</td>
<td style="vertical-align: top; text-align: left">x</td>
<td style="vertical-align: top; text-align: left"/>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">11</td>
<td style="vertical-align: top; text-align: left">−1</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left">−1</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left">x</td>
<td style="vertical-align: top; text-align: left"/>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">12</td>
<td style="vertical-align: top; text-align: left">−1</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left">+1</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left"/>
<td style="vertical-align: top; text-align: left"/>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">13</td>
<td style="vertical-align: top; text-align: left">+1</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left"/>
<td style="vertical-align: top; text-align: left"/>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">14</td>
<td style="vertical-align: top; text-align: left">+1</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left">+1</td>
<td style="vertical-align: top; text-align: left"/>
<td style="vertical-align: top; text-align: left"/>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">15</td>
<td style="vertical-align: top; text-align: left">+1</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left">−1</td>
<td style="vertical-align: top; text-align: left">0</td>
<td style="vertical-align: top; text-align: left"/>
<td style="vertical-align: top; text-align: left"/>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">16</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">+1</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">+1</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">0</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">x</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"/>
</tr>
</tbody>
</table>
</table-wrap>
<table-wrap id="j_infor411_tab_003">
<label>Table 3</label>
<caption>
<p>The extraordinary process of modification rule table.</p>
</caption>
<table>
<thead>
<tr>
<td rowspan="3" style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Rules</td>
<td rowspan="3" style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">Cases</td>
<td colspan="4" style="vertical-align: top; text-align: left; border-top: solid thin; border-bottom: solid thin">The final modified pretend tuple values</td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor411_ineq_061"><alternatives>
<mml:math><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msubsup><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}^{\prime }_{j}}({A_{i}})$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor411_ineq_062"><alternatives>
<mml:math><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msubsup><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}^{\prime }_{j+1}}({A_{i}})$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor411_ineq_063"><alternatives>
<mml:math><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msubsup><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}^{\prime }_{j}}({A_{i2}})$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor411_ineq_064"><alternatives>
<mml:math><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msubsup><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}^{\prime }_{j+1}}({A_{i2}})$]]></tex-math></alternatives></inline-formula></td>
</tr>
</thead>
<tbody>
<tr>
<td style="vertical-align: top; text-align: left">1</td>
<td style="vertical-align: top; text-align: left">3</td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor411_ineq_065"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>+</mml:mo><mml:mn>2</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i}})+2$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor411_ineq_066"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i}})+1$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor411_ineq_067"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>−</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i2}})-1$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor411_ineq_068"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i2}})+1$]]></tex-math></alternatives></inline-formula></td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">2</td>
<td style="vertical-align: top; text-align: left">6</td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor411_ineq_069"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i}})$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor411_ineq_070"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i}})+1$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor411_ineq_071"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i2}})$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor411_ineq_072"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>−</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i2}})-1$]]></tex-math></alternatives></inline-formula></td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">3</td>
<td style="vertical-align: top; text-align: left">7</td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor411_ineq_073"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>+</mml:mo><mml:mn>2</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i}})+2$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor411_ineq_074"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i}})$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor411_ineq_075"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>−</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i2}})-1$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor411_ineq_076"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i2}})$]]></tex-math></alternatives></inline-formula></td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">4</td>
<td style="vertical-align: top; text-align: left">9</td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor411_ineq_077"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>−</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i}})-1$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor411_ineq_078"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i}})$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor411_ineq_079"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>+</mml:mo><mml:mn>2</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i2}})+2$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor411_ineq_080"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i2}})+1$]]></tex-math></alternatives></inline-formula></td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">5</td>
<td style="vertical-align: top; text-align: left">10</td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor411_ineq_081"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>−</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i}})-1$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor411_ineq_082"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i}})$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor411_ineq_083"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>+</mml:mo><mml:mn>2</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i2}})+2$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor411_ineq_084"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i2}})$]]></tex-math></alternatives></inline-formula></td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left">6</td>
<td style="vertical-align: top; text-align: left">11</td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor411_ineq_085"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>−</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i}})-1$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor411_ineq_086"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>+</mml:mo><mml:mn>2</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i}})+2$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor411_ineq_087"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i2}})+1$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left"><inline-formula id="j_infor411_ineq_088"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>−</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i2}})-1$]]></tex-math></alternatives></inline-formula></td>
</tr>
<tr>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">7</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin">16</td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor411_ineq_089"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>−</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i}})-1$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor411_ineq_090"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>−</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i}})-1$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor411_ineq_091"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i2}})+1$]]></tex-math></alternatives></inline-formula></td>
<td style="vertical-align: top; text-align: left; border-bottom: solid thin"><inline-formula id="j_infor411_ineq_092"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>+</mml:mo><mml:mn>2</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i2}})+2$]]></tex-math></alternatives></inline-formula></td>
</tr>
</tbody>
</table>
</table-wrap>
<p>Taking Case 6 as an example, the first pair of <inline-formula id="j_infor411_ineq_093"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i}})$]]></tex-math></alternatives></inline-formula> is 0 and <inline-formula id="j_infor411_ineq_094"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i}})$]]></tex-math></alternatives></inline-formula> is +1. The second pair of <inline-formula id="j_infor411_ineq_095"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i2}})$]]></tex-math></alternatives></inline-formula> is 0 and <inline-formula id="j_infor411_ineq_096"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i2}})$]]></tex-math></alternatives></inline-formula> is +1 of the tuple value modification statuses; In this case, the recovered tuple value calculated by the averaging method is different from the original tuple value, so we need to use Rule 2 in Table <xref rid="j_infor411_tab_003">3</xref>. Therefore, the new tuple value modification state is that the first pair of <inline-formula id="j_infor411_ineq_097"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i}})$]]></tex-math></alternatives></inline-formula> is 0, the <inline-formula id="j_infor411_ineq_098"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i}})$]]></tex-math></alternatives></inline-formula> is +1, and the second pair of <inline-formula id="j_infor411_ineq_099"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i2}})$]]></tex-math></alternatives></inline-formula> is 0, the <inline-formula id="j_infor411_ineq_100"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i2}})$]]></tex-math></alternatives></inline-formula> is −1. Therefore, the final modified pretend tuple values are: <inline-formula id="j_infor411_ineq_101"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mi>‘</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}‘({A_{i}})$]]></tex-math></alternatives></inline-formula> does not need to be changed, <inline-formula id="j_infor411_ineq_102"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mi>‘</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}‘({A_{i}})={\mathit{tuple}_{j+1}}({A_{i}})+1$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_103"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mi>‘</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}‘({A_{i2}})$]]></tex-math></alternatives></inline-formula> is unchanged, <inline-formula id="j_infor411_ineq_104"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mi>‘</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>−</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}‘({A_{i2}})={\mathit{tuple}_{j+1}}({A_{i2}})-1$]]></tex-math></alternatives></inline-formula>.</p>
</sec>
<sec id="j_infor411_s_005">
<label>3.2</label>
<title>Hiding Phase</title>
<p>The private key was originally used to encrypt secret messages. It is assumed that the length of the encrypted confidential message is <italic>m</italic> bits, and the attribute to be hidden is located in <inline-formula id="j_infor411_ineq_105"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${A_{i}}$]]></tex-math></alternatives></inline-formula>. First, copy <inline-formula id="j_infor411_ineq_106"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${A_{i}}$]]></tex-math></alternatives></inline-formula> into the same two attributes <inline-formula id="j_infor411_ineq_107"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${A_{i}}$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor411_ineq_108"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${A_{i2}}$]]></tex-math></alternatives></inline-formula>. In Fig. <xref rid="j_infor411_fig_001">1</xref>, two tuple values are used: <inline-formula id="j_infor411_ineq_109"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal">,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i}},{A_{i2}})$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor411_ineq_110"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal">,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i}},{A_{i2}})$]]></tex-math></alternatives></inline-formula> as sets to hide all sets to obtain D’ (hidden data set after CM) = <inline-formula id="j_infor411_ineq_111"><alternatives>
<mml:math><mml:mo fence="true" stretchy="false">{</mml:mo><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msubsup><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal">,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$\{{\mathit{tuple}^{\prime }_{1}}({A_{i}},{A_{i2}})$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_112"><alternatives>
<mml:math><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msubsup><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal">,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo mathvariant="normal">,</mml:mo><mml:mo>…</mml:mo><mml:mo mathvariant="normal">,</mml:mo><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">m</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn><mml:mo>−</mml:mo><mml:mn>1</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msubsup><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal">,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}^{\prime }_{2}}({A_{i}},{A_{i2}}),\dots ,{\mathit{tuple}^{\prime }_{(m/2-1)}}({A_{i}},{A_{i2}})$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_113"><alternatives>
<mml:math><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">m</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msubsup><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal">,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo fence="true" stretchy="false">}</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}^{\prime }_{(m/2)}}({A_{i}},{A_{i2}})\}$]]></tex-math></alternatives></inline-formula>. The overall steps are as follows: First, use Table <xref rid="j_infor411_tab_002">2</xref> to hide CM into D. If something happens during the hiding process, use Table <xref rid="j_infor411_tab_003">3</xref> to modify the pretend tuple value. By the averaging method, the pretend tuple values can be restored: <inline-formula id="j_infor411_ineq_114"><alternatives>
<mml:math><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msubsup><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}^{\prime }_{j}}({A_{i}})$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_115"><alternatives>
<mml:math><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msubsup><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}^{\prime }_{j}}({A_{i2}})$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_116"><alternatives>
<mml:math><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msubsup><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}^{\prime }_{j+1}}({A_{i}})$]]></tex-math></alternatives></inline-formula>, and <inline-formula id="j_infor411_ineq_117"><alternatives>
<mml:math><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msubsup><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}^{\prime }_{j+1}}({A_{i2}})$]]></tex-math></alternatives></inline-formula> can be recovered to the original <inline-formula id="j_infor411_ineq_118"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i}})$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor411_ineq_119"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i}})$]]></tex-math></alternatives></inline-formula>, respectively.</p>
<p>The complete explanation for hiding phases is as follows:</p>
<list>
<list-item id="j_infor411_li_001">
<label>1)</label>
<p>Copy <inline-formula id="j_infor411_ineq_120"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${A_{i}}$]]></tex-math></alternatives></inline-formula> into the same two attributes <inline-formula id="j_infor411_ineq_121"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${A_{i}}$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor411_ineq_122"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${A_{i2}}$]]></tex-math></alternatives></inline-formula>.</p>
</list-item>
<list-item id="j_infor411_li_002">
<label>2)</label>
<p>Each 2 tuple values <inline-formula id="j_infor411_ineq_123"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal">,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i}},{A_{i2}})$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor411_ineq_124"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal">,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i}},{A_{i2}})$]]></tex-math></alternatives></inline-formula> are used as a set, and for each set, 4 consecutive bits are obtained from the CM. Therefore, four consecutive bits are retrieved from the CM. <inline-formula id="j_infor411_ineq_125"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[$s1$]]></tex-math></alternatives></inline-formula> is first, <inline-formula id="j_infor411_ineq_126"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>2</mml:mn></mml:math>
<tex-math><![CDATA[$s2$]]></tex-math></alternatives></inline-formula> is second, <inline-formula id="j_infor411_ineq_127"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>3</mml:mn></mml:math>
<tex-math><![CDATA[$s3$]]></tex-math></alternatives></inline-formula> is third, and <inline-formula id="j_infor411_ineq_128"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>4</mml:mn></mml:math>
<tex-math><![CDATA[$s4$]]></tex-math></alternatives></inline-formula> is fourth bits. Next, through Fig. <xref rid="j_infor411_fig_001">1</xref>, <inline-formula id="j_infor411_ineq_129"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[$s1$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor411_ineq_130"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>2</mml:mn></mml:math>
<tex-math><![CDATA[$s2$]]></tex-math></alternatives></inline-formula> are hidden in <inline-formula id="j_infor411_ineq_131"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i}})$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor411_ineq_132"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i}})$]]></tex-math></alternatives></inline-formula>, respectively, and then <inline-formula id="j_infor411_ineq_133"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>3</mml:mn></mml:math>
<tex-math><![CDATA[$s3$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor411_ineq_134"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>4</mml:mn></mml:math>
<tex-math><![CDATA[$s4$]]></tex-math></alternatives></inline-formula> are hidden in <inline-formula id="j_infor411_ineq_135"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i2}})$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor411_ineq_136"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i2}})$]]></tex-math></alternatives></inline-formula>, respectively.</p>
<p>For example, after hiding 4 continuous bits into tuples by Fig. <xref rid="j_infor411_fig_001">1</xref>, if the first pair tuple values are <inline-formula id="j_infor411_ineq_137"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i}})=0$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_138"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i}})=+1$]]></tex-math></alternatives></inline-formula>, and the second pair tuple values are <inline-formula id="j_infor411_ineq_139"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i2}})=0$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_140"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i2}})=+1$]]></tex-math></alternatives></inline-formula>; then this condition belongs to Case-6. However, according to the restoration state of the original tuple value, the original <inline-formula id="j_infor411_ineq_141"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i}})$]]></tex-math></alternatives></inline-formula> cannot be restored. Therefore, Table <xref rid="j_infor411_tab_003">3</xref> is used to adjust the pretend tuple values.</p>
</list-item>
<list-item id="j_infor411_li_003">
<label>3)</label>
<p>Cases 3, 6, 7, 9–11, 16: In Table <xref rid="j_infor411_tab_002">2</xref>, there are 7 cases (Cases 3, 6, 7, 9–11, 16) that cannot recover the original tuple value by averaging. If this happens, use Table <xref rid="j_infor411_tab_003">3</xref> to modify the pretend tuple value. As just mentioned, according to Table <xref rid="j_infor411_tab_003">3</xref>, Case 6 will set <inline-formula id="j_infor411_ineq_142"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i}})$]]></tex-math></alternatives></inline-formula> to +1 in the first pair tuple values, and <inline-formula id="j_infor411_ineq_143"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i2}})$]]></tex-math></alternatives></inline-formula> in the second pair tuple values is also set to −1.</p>
</list-item>
<list-item id="j_infor411_li_004">
<label>4)</label>
<p>Steps 2) and 3) are repeated in order to hide all CM into the tuple values.</p>
</list-item>
</list>
<fig id="j_infor411_fig_002">
<label>Algorithm 1</label>
<caption>
<p>Hiding function.</p>
</caption>
<graphic xlink:href="infor411_g002.jpg"/>
</fig>
<p>Algorithm <xref rid="j_infor411_fig_002">1</xref> is a hiding function that implements the concepts of Fig. <xref rid="j_infor411_fig_001">1</xref>, Table <xref rid="j_infor411_tab_002">2</xref> and Table <xref rid="j_infor411_tab_003">3</xref>, and Fig. <xref rid="j_infor411_fig_003">2</xref> is Algorithm <xref rid="j_infor411_fig_002">1</xref> flow chart. Algorithm <xref rid="j_infor411_fig_004">2</xref> is a function that retrieves an assigned bit of CM. As shown in Table <xref rid="j_infor411_tab_001">1</xref>, <inline-formula id="j_infor411_ineq_144"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i}})$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor411_ineq_145"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i2}})$]]></tex-math></alternatives></inline-formula>, and <inline-formula id="j_infor411_ineq_146"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i}})$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor411_ineq_147"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i2}})$]]></tex-math></alternatives></inline-formula> are two pairs of tuple values in D. In lines 5–11, Algorithm <xref rid="j_infor411_fig_002">1</xref> first retrieves tuples from D, and temporarily saves them into tempDBValue array (a two-dimensional array); hence lines 12–60 can hide confidential message into tempDBValue array, and then tempDBValue array is updated to D in line 61. Line 12 is that when a tuple number is even, lines 13–60 begin to hide CM through the LSB matching method for relational databases and Modification rule table. Every time, lines 13–19 get 4 continuous bits from CM by Get_CMbit function (Algorithm <xref rid="j_infor411_fig_004">2</xref>), and they are stored in <inline-formula id="j_infor411_ineq_148"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[$s1$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_149"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>2</mml:mn></mml:math>
<tex-math><![CDATA[$s2$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_150"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>3</mml:mn></mml:math>
<tex-math><![CDATA[$s3$]]></tex-math></alternatives></inline-formula>, and <inline-formula id="j_infor411_ineq_151"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>4</mml:mn></mml:math>
<tex-math><![CDATA[$s4$]]></tex-math></alternatives></inline-formula>, respectively. Lines 20–45 determine which situation <inline-formula id="j_infor411_ineq_152"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal">,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i}},{A_{i2}})$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor411_ineq_153"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal">,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i}},{A_{i2}})$]]></tex-math></alternatives></inline-formula> belong to. Afterwards, if some cases happen, Table <xref rid="j_infor411_tab_003">3</xref> is further used to adjust tempDBValue array in lines 46–60. Therefore, CM is hidden into tempDBValue array.</p>
<fig id="j_infor411_fig_003">
<label>Fig. 2</label>
<caption>
<p>Algorithm 1 flow chart.</p>
</caption>
<graphic xlink:href="infor411_g003.jpg"/>
</fig>
<fig id="j_infor411_fig_004">
<label>Algorithm 2</label>
<caption>
<p>Get_CMbit function.</p>
</caption>
<graphic xlink:href="infor411_g004.jpg"/>
</fig>
</sec>
<sec id="j_infor411_s_006">
<label>3.3</label>
<title>Extraction and Restoration Phases</title>
<p>CM and recovery raw data are extracted separately in this phase. Firstly, we extract CM from the first pair tuple values: <inline-formula id="j_infor411_ineq_154"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i}})$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_155"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i}})$]]></tex-math></alternatives></inline-formula>, and the second pair tuple values: <inline-formula id="j_infor411_ineq_156"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i2}})$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_157"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i2}})$]]></tex-math></alternatives></inline-formula> through the LSB and LSB matching method for relational databases. <inline-formula id="j_infor411_ineq_158"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[$s1$]]></tex-math></alternatives></inline-formula> is obtained from <inline-formula id="j_infor411_ineq_159"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i}})$]]></tex-math></alternatives></inline-formula> by the LSB equation. After that, <inline-formula id="j_infor411_ineq_160"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>2</mml:mn></mml:math>
<tex-math><![CDATA[$s2$]]></tex-math></alternatives></inline-formula> is gained by equation (<xref rid="j_infor411_eq_001">1</xref>). Substitute <inline-formula id="j_infor411_ineq_161"><alternatives>
<mml:math><mml:mi mathvariant="italic">x</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$x={\mathit{tuple}_{j}}({A_{i}})$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor411_ineq_162"><alternatives>
<mml:math><mml:mi mathvariant="italic">y</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$y={\mathit{tuple}_{j+1}}({A_{i}})$]]></tex-math></alternatives></inline-formula> into <inline-formula id="j_infor411_ineq_163"><alternatives>
<mml:math><mml:mi mathvariant="italic">F</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mo>·</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$F(\cdot )$]]></tex-math></alternatives></inline-formula>, and the value for <inline-formula id="j_infor411_ineq_164"><alternatives>
<mml:math><mml:mi mathvariant="italic">F</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mo>·</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$F(\cdot )$]]></tex-math></alternatives></inline-formula> represents <inline-formula id="j_infor411_ineq_165"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>2</mml:mn></mml:math>
<tex-math><![CDATA[$s2$]]></tex-math></alternatives></inline-formula>. In the same way, <inline-formula id="j_infor411_ineq_166"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>3</mml:mn></mml:math>
<tex-math><![CDATA[$s3$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor411_ineq_167"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>4</mml:mn></mml:math>
<tex-math><![CDATA[$s4$]]></tex-math></alternatives></inline-formula> are obtained from the second pair tuple values: <inline-formula id="j_infor411_ineq_168"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i2}})$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_169"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i2}})$]]></tex-math></alternatives></inline-formula>. Lastly, CM is decrypted by the same private key.</p>
<p>During restoration phases, the average value of the two tuple values can be calculated through the averaging method to recover the raw data, namely, using equation (<xref rid="j_infor411_eq_002">2</xref>) to compute <inline-formula id="j_infor411_ineq_170"><alternatives>
<mml:math><mml:mo fence="true" stretchy="false">⌊</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn><mml:mo fence="true" stretchy="false">⌋</mml:mo></mml:math>
<tex-math><![CDATA[$\lfloor ({\mathit{tuple}_{{j^{\prime }}}}({A_{i}})+{\mathit{tuple}_{{j^{\prime }}}}({A_{i2}}))/2\rfloor $]]></tex-math></alternatives></inline-formula> we can restore the original <inline-formula id="j_infor411_ineq_171"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i}})$]]></tex-math></alternatives></inline-formula>; by computing <inline-formula id="j_infor411_ineq_172"><alternatives>
<mml:math><mml:mo fence="true" stretchy="false">⌊</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:msup><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:msup><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn><mml:mo fence="true" stretchy="false">⌋</mml:mo></mml:math>
<tex-math><![CDATA[$\lfloor ({\mathit{tuple}_{j+{1^{\prime }}}}({A_{i}})+{\mathit{tuple}_{j+{1^{\prime }}}}({A_{i2}}))/2\rfloor $]]></tex-math></alternatives></inline-formula> we can restore the original <inline-formula id="j_infor411_ineq_173"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i}})$]]></tex-math></alternatives></inline-formula>. The following formula is equation (<xref rid="j_infor411_eq_001">1</xref>) (Lu <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor411_ref_018">2015a</xref>): 
<disp-formula id="j_infor411_eq_001">
<label>(1)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mi mathvariant="italic">F</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">x</mml:mi><mml:mo mathvariant="normal">,</mml:mo><mml:mi mathvariant="italic">y</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mi mathvariant="italic">LSB</mml:mi><mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">(</mml:mo><mml:mo fence="true" stretchy="false">⌊</mml:mo><mml:mi mathvariant="italic">x</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn><mml:mo fence="true" stretchy="false">⌋</mml:mo><mml:mo>+</mml:mo><mml:mi mathvariant="italic">y</mml:mi><mml:mo mathvariant="normal" fence="true" maxsize="1.19em" minsize="1.19em">)</mml:mo><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ F(x,y)=\mathit{LSB}\big(\lfloor x/2\rfloor +y\big).\]]]></tex-math></alternatives>
</disp-formula>
</p>
<p>The following formula for the averaging method is equation (<xref rid="j_infor411_eq_002">2</xref>): 
<disp-formula id="j_infor411_eq_002">
<label>(2)</label><alternatives>
<mml:math display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mfenced separators="" open="{" close="}"><mml:mrow><mml:mtable columnspacing="4.0pt 4.0pt" equalrows="false" columnlines="none none" equalcolumns="false" columnalign="right center left"><mml:mtr><mml:mtd class="array"><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:mtd><mml:mtd class="array"><mml:mo>=</mml:mo></mml:mtd><mml:mtd class="array"><mml:mo fence="true" stretchy="false">⌊</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn><mml:mo fence="true" stretchy="false">⌋</mml:mo><mml:mo mathvariant="normal">,</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd class="array"><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:mtd><mml:mtd class="array"><mml:mo>=</mml:mo></mml:mtd><mml:mtd class="array"><mml:mo fence="true" stretchy="false">⌊</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:msup><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:msup><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn><mml:mo fence="true" stretchy="false">⌋</mml:mo><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mfenced></mml:mtd></mml:mtr></mml:mtable></mml:math>
<tex-math><![CDATA[\[ \left\{\begin{array}{r@{\hskip4.0pt}c@{\hskip4.0pt}l}{\mathit{tuple}_{j}}({A_{i}})& =& \lfloor ({\mathit{tuple}_{{j^{\prime }}}}({A_{i}})+{\mathit{tuple}_{{j^{\prime }}}}({A_{i2}}))/2\rfloor ,\\ {} {\mathit{tuple}_{j+1}}({A_{i}})& =& \lfloor ({\mathit{tuple}_{j+{1^{\prime }}}}({A_{i}})+{\mathit{tuple}_{j+{1^{\prime }}}}({A_{i2}}))/2\rfloor .\end{array}\right\}\]]]></tex-math></alternatives>
</disp-formula>
</p>
<fig id="j_infor411_fig_005">
<label>Algorithm 3</label>
<caption>
<p>Extract Restore function.</p>
</caption>
<graphic xlink:href="infor411_g005.jpg"/>
</fig>
<p>Algorithm <xref rid="j_infor411_fig_005">3</xref> is an extract restore function that extracts CM from D’ and restores the raw data, and Fig. <xref rid="j_infor411_fig_006">3</xref> is Algorithm <xref rid="j_infor411_fig_005">3</xref> flow chart. In lines 5–12, Algorithm <xref rid="j_infor411_fig_005">3</xref> first retrieves tuples from D’, and temporarily saves them into tempDBValue array (a two-dimensional array); hence, lines 14–18 can get CM, and then lines 19–20 restore raw data into tempDBValue array, and, finally, tempDBValue array is updated to D in line 21. Line 13 is that when tuple number is even, it calculates the CM through LSB and LSB matching method for relational databases in lines 14–18, and restores the raw data through averaging method in lines 19–20. Lastly, this function returns CM and D.</p>
</sec>
<sec id="j_infor411_s_007">
<label>3.4</label>
<title>Example</title>
<fig id="j_infor411_fig_006">
<label>Fig. 3</label>
<caption>
<p>Algorithm <xref rid="j_infor411_fig_005">3</xref> flow chart.</p>
</caption>
<graphic xlink:href="infor411_g006.jpg"/>
</fig>
<p>We have already proved our algorithms are feasible on a computer with Intel(R) Core(TM)2 Quad CPU, 4 GB of RAM, and MySQL 5.6 is our database. In this section, we illustrate our experimental examples to let readers understand the proposed scheme.</p>
<fig id="j_infor411_fig_007">
<label>Fig. 4</label>
<caption>
<p>An example for hiding phase.</p>
</caption>
<graphic xlink:href="infor411_g007.jpg"/>
</fig>
<fig id="j_infor411_fig_008">
<label>Fig. 5</label>
<caption>
<p>An example for extraction and restoration phase.</p>
</caption>
<graphic xlink:href="infor411_g008.jpg"/>
</fig>
<p>The format of Figs. <xref rid="j_infor411_fig_007">4</xref> and <xref rid="j_infor411_fig_008">5</xref> in (Lu <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor411_ref_018">2015a</xref>) are taken as a reference to design our own experimental examples. Take Fig. <xref rid="j_infor411_fig_007">4</xref> for example, we explain hiding phases as follows: firstly, Price is copied into two same attributes Price and Price2, and then use (2563, 2563) and (3333, 3333) as the first set. Suppose that the CM = 1011, through Fig. <xref rid="j_infor411_fig_001">1</xref>, <inline-formula id="j_infor411_ineq_174"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[$s1$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_175"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>2</mml:mn></mml:math>
<tex-math><![CDATA[$s2$]]></tex-math></alternatives></inline-formula> are hidden into <inline-formula id="j_infor411_ineq_176"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$({\mathit{tuple}_{j}}({A_{i}})$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_177"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mn>2563</mml:mn><mml:mo mathvariant="normal">,</mml:mo><mml:mn>3333</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i}}))=(2563,3333)$]]></tex-math></alternatives></inline-formula> in Price separately, and then <inline-formula id="j_infor411_ineq_178"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>3</mml:mn></mml:math>
<tex-math><![CDATA[$s3$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_179"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>4</mml:mn></mml:math>
<tex-math><![CDATA[$s4$]]></tex-math></alternatives></inline-formula> are hidden into <inline-formula id="j_infor411_ineq_180"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$({\mathit{tuple}_{j}}({A_{i2}})$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_181"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mn>2563</mml:mn><mml:mo mathvariant="normal">,</mml:mo><mml:mn>3333</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i2}}))=(2563,3333)$]]></tex-math></alternatives></inline-formula> in Price2 separately. When hiding <inline-formula id="j_infor411_ineq_182"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[$s1$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_183"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>2</mml:mn></mml:math>
<tex-math><![CDATA[$s2$]]></tex-math></alternatives></inline-formula>, because <inline-formula id="j_infor411_ineq_184"><alternatives>
<mml:math><mml:mi mathvariant="italic">LSB</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mn>2563</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo>=</mml:mo><mml:mi mathvariant="italic">s</mml:mi><mml:mn>1</mml:mn><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[$\mathit{LSB}(2563)=1=s1=1$]]></tex-math></alternatives></inline-formula>, substituting 2563, 3333 into equation (<xref rid="j_infor411_eq_001">1</xref>), it gains <inline-formula id="j_infor411_ineq_185"><alternatives>
<mml:math><mml:mi mathvariant="italic">F</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mn>2563</mml:mn><mml:mo mathvariant="normal">,</mml:mo><mml:mn>3333</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mi mathvariant="italic">LSB</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mn>4614</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>0</mml:mn><mml:mo>=</mml:mo><mml:mi mathvariant="italic">s</mml:mi><mml:mn>2</mml:mn><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:math>
<tex-math><![CDATA[$F(2563,3333)=\mathit{LSB}(4614)=0=s2=0$]]></tex-math></alternatives></inline-formula>. Because of <italic>F</italic> value = <inline-formula id="j_infor411_ineq_186"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>2</mml:mn></mml:math>
<tex-math><![CDATA[$s2$]]></tex-math></alternatives></inline-formula>, therefore, this is Situation A in Fig. <xref rid="j_infor411_fig_001">1</xref>. Afterwards, <inline-formula id="j_infor411_ineq_187"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>3</mml:mn></mml:math>
<tex-math><![CDATA[$s3$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_188"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>4</mml:mn></mml:math>
<tex-math><![CDATA[$s4$]]></tex-math></alternatives></inline-formula> are hidden into <inline-formula id="j_infor411_ineq_189"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$({\mathit{tuple}_{j}}({A_{i2}})$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_190"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mn>2563</mml:mn><mml:mo mathvariant="normal">,</mml:mo><mml:mn>3333</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i2}}))=(2563,3333)$]]></tex-math></alternatives></inline-formula>. Because <inline-formula id="j_infor411_ineq_191"><alternatives>
<mml:math><mml:mi mathvariant="italic">LSB</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mn>2563</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo>=</mml:mo><mml:mi mathvariant="italic">s</mml:mi><mml:mn>3</mml:mn><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[$\mathit{LSB}(2563)=1=s3=1$]]></tex-math></alternatives></inline-formula>, substituting 2563, 3333 into equation (<xref rid="j_infor411_eq_001">1</xref>), it obtains <inline-formula id="j_infor411_ineq_192"><alternatives>
<mml:math><mml:mi mathvariant="italic">F</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mn>2563</mml:mn><mml:mo mathvariant="normal">,</mml:mo><mml:mn>3333</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mi mathvariant="italic">LSB</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mn>4614</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>0</mml:mn><mml:mo stretchy="false">≠</mml:mo><mml:mi mathvariant="italic">s</mml:mi><mml:mn>4</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$F(2563,3333)=\mathit{LSB}(4614)=0\ne s4(=1)$]]></tex-math></alternatives></inline-formula>. Due to <italic>F</italic> value <inline-formula id="j_infor411_ineq_193"><alternatives>
<mml:math><mml:mo stretchy="false">≠</mml:mo><mml:mi mathvariant="italic">s</mml:mi><mml:mn>4</mml:mn></mml:math>
<tex-math><![CDATA[$\ne s4$]]></tex-math></alternatives></inline-formula>, therefore, this is Situation B in Fig. <xref rid="j_infor411_fig_001">1</xref>. As just mentioned, <inline-formula id="j_infor411_ineq_194"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$({\mathit{tuple}_{j}}({A_{i}})$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_195"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i}}))$]]></tex-math></alternatives></inline-formula> is Situation A = (2563, 3333), and <inline-formula id="j_infor411_ineq_196"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$({\mathit{tuple}_{j}}({A_{i2}})$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_197"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i2}}))$]]></tex-math></alternatives></inline-formula> is Situation B = (2563, 3333+1). This is Case-2 in Table <xref rid="j_infor411_tab_002">2</xref>, and thus the original tuple values can be recovered. Therefore, Table <xref rid="j_infor411_tab_003">3</xref> is not needed, and we get <inline-formula id="j_infor411_ineq_198"><alternatives>
<mml:math><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msubsup><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>2563</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}^{\prime }_{j}}({A_{i}})=2563$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_199"><alternatives>
<mml:math><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msubsup><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>3333</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}^{\prime }_{j+1}}({A_{i}})=3333$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor411_ineq_200"><alternatives>
<mml:math><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msubsup><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>2563</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}^{\prime }_{j}}({A_{i2}})=2563$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_201"><alternatives>
<mml:math><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msubsup><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>3334</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}^{\prime }_{j+1}}({A_{i2}})=3334$]]></tex-math></alternatives></inline-formula>.</p>
<p>Next, assume that the CM = 0000, and then (7777, 7777) and (9999, 9999) are used as the second set. <inline-formula id="j_infor411_ineq_202"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[$s1$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_203"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>2</mml:mn></mml:math>
<tex-math><![CDATA[$s2$]]></tex-math></alternatives></inline-formula> are hidden into <inline-formula id="j_infor411_ineq_204"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$({\mathit{tuple}_{j}}({A_{i}})$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_205"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mn>7777</mml:mn><mml:mo mathvariant="normal">,</mml:mo><mml:mn>9999</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i}}))=(7777,9999)$]]></tex-math></alternatives></inline-formula> in Price, respectively, and then hide <inline-formula id="j_infor411_ineq_206"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>3</mml:mn></mml:math>
<tex-math><![CDATA[$s3$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_207"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>4</mml:mn></mml:math>
<tex-math><![CDATA[$s4$]]></tex-math></alternatives></inline-formula> into <inline-formula id="j_infor411_ineq_208"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$({\mathit{tuple}_{j}}({A_{i2}})$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_209"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mn>7777</mml:mn><mml:mo mathvariant="normal">,</mml:mo><mml:mn>9999</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i2}}))=(7777,9999)$]]></tex-math></alternatives></inline-formula> in Price, respectively. By Fig. <xref rid="j_infor411_fig_001">1</xref>, it knows <inline-formula id="j_infor411_ineq_210"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$({\mathit{tuple}_{j}}({A_{i}})$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_211"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i}}))$]]></tex-math></alternatives></inline-formula> is Situation <inline-formula id="j_infor411_ineq_212"><alternatives>
<mml:math><mml:mi mathvariant="italic">D</mml:mi><mml:mo>=</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mn>7777</mml:mn><mml:mo>+</mml:mo><mml:mn>1</mml:mn><mml:mo mathvariant="normal">,</mml:mo><mml:mn>9999</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$D=(7777+1,9999)$]]></tex-math></alternatives></inline-formula>, and <inline-formula id="j_infor411_ineq_213"><alternatives>
<mml:math><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$({\mathit{tuple}_{j}}({A_{i2}})$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_214"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i2}}))$]]></tex-math></alternatives></inline-formula> is Situation D = (7777+1, 9999). This is Case-16 in Table <xref rid="j_infor411_tab_002">2</xref>, so the original tuple values cannot be restored. Therefore, Table <xref rid="j_infor411_tab_003">3</xref> (Modification rule table) is further used to modify the pretend tuple values. Case-16 follows Rule-7 in Table <xref rid="j_infor411_tab_003">3</xref>, so it gains <inline-formula id="j_infor411_ineq_215"><alternatives>
<mml:math><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msubsup><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>7777</mml:mn><mml:mo>−</mml:mo><mml:mn>1</mml:mn><mml:mo>=</mml:mo><mml:mn>7776</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}^{\prime }_{j}}({A_{i}})=7777-1=7776$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_216"><alternatives>
<mml:math><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msubsup><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>9999</mml:mn><mml:mo>−</mml:mo><mml:mn>1</mml:mn><mml:mo>=</mml:mo><mml:mn>9998</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}^{\prime }_{j+1}}({A_{i}})=9999-1=9998$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor411_ineq_217"><alternatives>
<mml:math><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msubsup><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>7777</mml:mn><mml:mo>+</mml:mo><mml:mn>1</mml:mn><mml:mo>=</mml:mo><mml:mn>7778</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}^{\prime }_{j}}({A_{i2}})=7777+1=7778$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_218"><alternatives>
<mml:math><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msubsup><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>9999</mml:mn><mml:mo>+</mml:mo><mml:mn>2</mml:mn><mml:mo>=</mml:mo><mml:mn>10001</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}^{\prime }_{j+1}}({A_{i2}})=9999+2=10001$]]></tex-math></alternatives></inline-formula>.</p>
<p>Take Fig. <xref rid="j_infor411_fig_008">5</xref> as an example, we illustrate extraction and restoration phases as follows: Extract CM and recovery raw data separately. In the first set, <inline-formula id="j_infor411_ineq_219"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>1</mml:mn><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[$s1=1$]]></tex-math></alternatives></inline-formula> is gotten from <inline-formula id="j_infor411_ineq_220"><alternatives>
<mml:math><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msubsup><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>2563</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}^{\prime }_{j}}({A_{i}})=2563$]]></tex-math></alternatives></inline-formula> by the LSB equation. After that, substitute <inline-formula id="j_infor411_ineq_221"><alternatives>
<mml:math><mml:mi mathvariant="italic">x</mml:mi><mml:mo>=</mml:mo><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msubsup><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>2563</mml:mn></mml:math>
<tex-math><![CDATA[$x={\mathit{tuple}^{\prime }_{j}}({A_{i}})=2563$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor411_ineq_222"><alternatives>
<mml:math><mml:mi mathvariant="italic">y</mml:mi><mml:mo>=</mml:mo><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msubsup><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>3333</mml:mn></mml:math>
<tex-math><![CDATA[$y={\mathit{tuple}^{\prime }_{j+1}}({A_{i}})=3333$]]></tex-math></alternatives></inline-formula> into equation (<xref rid="j_infor411_eq_001">1</xref>), and then get <inline-formula id="j_infor411_ineq_223"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>2</mml:mn><mml:mo>=</mml:mo><mml:mi mathvariant="italic">F</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mn>2563</mml:mn><mml:mo mathvariant="normal">,</mml:mo><mml:mn>3333</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:math>
<tex-math><![CDATA[$s2=F(2563,3333)=0$]]></tex-math></alternatives></inline-formula>. In the same way, <inline-formula id="j_infor411_ineq_224"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>3</mml:mn><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[$s3=1$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor411_ineq_225"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>4</mml:mn><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:math>
<tex-math><![CDATA[$s4=1$]]></tex-math></alternatives></inline-formula> are obtained from the second pair tuple values: <inline-formula id="j_infor411_ineq_226"><alternatives>
<mml:math><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msubsup><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>2563</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}^{\prime }_{j}}({A_{i2}})=2563$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_227"><alternatives>
<mml:math><mml:msubsup><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msubsup><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>3334</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}^{\prime }_{j+1}}({A_{i2}})=3334$]]></tex-math></alternatives></inline-formula>. By the above-mentioned way, CM is also extracted from the second set, i.e. <inline-formula id="j_infor411_ineq_228"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>1</mml:mn><mml:mo>=</mml:mo><mml:mi mathvariant="italic">LSB</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mn>7776</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:math>
<tex-math><![CDATA[$s1=\mathit{LSB}(7776)=0$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_229"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>2</mml:mn><mml:mo>=</mml:mo><mml:mi mathvariant="italic">F</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mn>7776</mml:mn><mml:mo mathvariant="normal">,</mml:mo><mml:mn>9998</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:math>
<tex-math><![CDATA[$s2=F(7776,9998)=0$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_230"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>3</mml:mn><mml:mo>=</mml:mo><mml:mi mathvariant="italic">LSB</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mn>7778</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:math>
<tex-math><![CDATA[$s3=\mathit{LSB}(7778)=0$]]></tex-math></alternatives></inline-formula>, and <inline-formula id="j_infor411_ineq_231"><alternatives>
<mml:math><mml:mi mathvariant="italic">s</mml:mi><mml:mn>4</mml:mn><mml:mo>=</mml:mo><mml:mi mathvariant="italic">F</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mn>7778</mml:mn><mml:mo mathvariant="normal">,</mml:mo><mml:mn>10001</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:math>
<tex-math><![CDATA[$s4=F(7778,10001)=0$]]></tex-math></alternatives></inline-formula>.</p>
<p>During restoration phase, equation (<xref rid="j_infor411_eq_002">2</xref>) is used to compute <inline-formula id="j_infor411_ineq_232"><alternatives>
<mml:math><mml:mo fence="true" stretchy="false">⌊</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>2563</mml:mn><mml:mo>+</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>2563</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn><mml:mo fence="true" stretchy="false">⌋</mml:mo></mml:math>
<tex-math><![CDATA[$\lfloor ({\mathit{tuple}_{{j^{\prime }}}}({A_{i}})=2563+{\mathit{tuple}_{{j^{\prime }}}}({A_{i2}})=2563)/2\rfloor $]]></tex-math></alternatives></inline-formula>, and then the original <inline-formula id="j_infor411_ineq_233"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>2563</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i}})=2563$]]></tex-math></alternatives></inline-formula> is restored. <inline-formula id="j_infor411_ineq_234"><alternatives>
<mml:math><mml:mo fence="true" stretchy="false">⌊</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:msup><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>3333</mml:mn><mml:mo>+</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:msup><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mo>′</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>3334</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn><mml:mo fence="true" stretchy="false">⌋</mml:mo></mml:math>
<tex-math><![CDATA[$\lfloor ({\mathit{tuple}_{j+{1^{\prime }}}}({A_{i}})=3333+{\mathit{tuple}_{j+{1^{\prime }}}}({A_{i2}})=3334)/2\rfloor $]]></tex-math></alternatives></inline-formula> is computed, and then the original <inline-formula id="j_infor411_ineq_235"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>3333</mml:mn></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i}})=3333$]]></tex-math></alternatives></inline-formula> is restored. Similarly, the original tuple value 7777, 9999 are restored.</p>
</sec>
</sec>
<sec id="j_infor411_s_008">
<label>4</label>
<title>Capacity and Complexity Analysis of Our Method</title>
<p>We all know that the data-hiding technique has two important requirements, the integrity of raw data and data hiding capacity. With respect to the integrity of raw data, since our proposed technique is reversible, it can recover the raw data. Therefore, the following paragraphs analyse data hiding capacity and the complexity of our algorithms:</p>
<sec id="j_infor411_s_009">
<label>4.1</label>
<title>Data Hiding Capacity</title>
<p>The data hiding capacity of our technique depends on the database. The more tuples in D, the more hiding capacity of our technique. Assume there are <italic>n</italic> tuples in D, and then the maximum hiding capacity = 2n bits.</p>
<p>Our technique uses each 2 tuple values: <inline-formula id="j_infor411_ineq_236"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal">,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i}},{A_{i2}})$]]></tex-math></alternatives></inline-formula> and <inline-formula id="j_infor411_ineq_237"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal">,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i}},{A_{i2}})$]]></tex-math></alternatives></inline-formula> as a set, and then hides a bit into each tuple value, i.e. hiding four bits into <inline-formula id="j_infor411_ineq_238"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i}})$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_239"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j}}({A_{i2}})$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_240"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i}})$]]></tex-math></alternatives></inline-formula>, <inline-formula id="j_infor411_ineq_241"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">tuple</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[${\mathit{tuple}_{j+1}}({A_{i2}})$]]></tex-math></alternatives></inline-formula>, respectively. Therefore, the watermark bits we intend to hide must be multiple of four. Furthermore, if <italic>n</italic> is odd, the last tuple cannot be used to hide confidential messages.</p>
</sec>
<sec id="j_infor411_s_010">
<label>4.2</label>
<title>The Complexity of Our Algorithms</title>
<p>According to Franco-Contreras <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor411_ref_009">2014</xref>), Xie <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor411_ref_027">2016</xref>), computation time is an important issue we should consider. Thus, we analyse the complexity of Algorithm <xref rid="j_infor411_fig_002">1</xref> and Algorithm <xref rid="j_infor411_fig_005">3</xref>, and try to prove whether they are efficient or not. We assume there are <italic>n</italic> tuples in D, and the time of updating the value in the database is TDB (it is determined by the database and the amount of data, so we ignore it); moreover, assume situations A–D in Fig. <xref rid="j_infor411_fig_001">1</xref> will happen averagely, and furthermore assume the probability of occurrence of the cases in Table <xref rid="j_infor411_tab_003">3</xref> is very small, so we can ignore them. Therefore, the number of executions of every instruction is shown in comments of Algorithms <xref rid="j_infor411_fig_002">1</xref> and <xref rid="j_infor411_fig_005">3</xref>. Because line 12 in Algorithm <xref rid="j_infor411_fig_002">1</xref> and Algorithm <xref rid="j_infor411_fig_005">3</xref> limits tuple number to even numbers, the numbers of executions of the instructions after line 12 will be reduced to <inline-formula id="j_infor411_ineq_242"><alternatives>
<mml:math><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn></mml:math>
<tex-math><![CDATA[$n/2$]]></tex-math></alternatives></inline-formula>.</p>
<p>In Algorithm <xref rid="j_infor411_fig_002">1</xref>, lines 20–32 execute <inline-formula id="j_infor411_ineq_243"><alternatives>
<mml:math><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn></mml:math>
<tex-math><![CDATA[$n/2$]]></tex-math></alternatives></inline-formula> times. Because we assume situations A–D happen averagely, lines 21–25 and lines 27–31 share <inline-formula id="j_infor411_ineq_244"><alternatives>
<mml:math><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn></mml:math>
<tex-math><![CDATA[$n/2$]]></tex-math></alternatives></inline-formula> of lines 20–32; hence, lines 21–25 and lines 27–31 are executed <inline-formula id="j_infor411_ineq_245"><alternatives>
<mml:math><mml:mstyle displaystyle="false"><mml:mfrac><mml:mrow><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac></mml:mstyle></mml:math>
<tex-math><![CDATA[$\frac{(n/2)}{2}$]]></tex-math></alternatives></inline-formula> times, respectively. Lines 22 and 24 share <inline-formula id="j_infor411_ineq_246"><alternatives>
<mml:math><mml:mstyle displaystyle="false"><mml:mfrac><mml:mrow><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac></mml:mstyle></mml:math>
<tex-math><![CDATA[$\frac{(n/2)}{2}$]]></tex-math></alternatives></inline-formula> times of lines 21–24; therefore, lines 22 and 24 are executed <inline-formula id="j_infor411_ineq_247"><alternatives>
<mml:math><mml:mstyle displaystyle="false"><mml:mfrac><mml:mrow><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac></mml:mstyle></mml:math>
<tex-math><![CDATA[$\frac{((n/2)/2)}{2}$]]></tex-math></alternatives></inline-formula> times, respectively. Moreover, lines 22 and 24 both have two-line code, so we multiply <inline-formula id="j_infor411_ineq_248"><alternatives>
<mml:math><mml:mstyle displaystyle="false"><mml:mfrac><mml:mrow><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac></mml:mstyle></mml:math>
<tex-math><![CDATA[$\frac{((n/2)/2)}{2}$]]></tex-math></alternatives></inline-formula> times of lines 22 and 24 by two. Lines 28 and 30 are in the same way. For the same reason, we calculate the number of executions of every instruction between lines 33–45. Because we ignore cases in Table 3, lines 47, 49, 51, 53, 55, 57, and 59 will not be calculated.</p>
<p>The number of executions of total instructions in Algorithm <xref rid="j_infor411_fig_002">1</xref> is <inline-formula id="j_infor411_ineq_249"><alternatives>
<mml:math><mml:mn>1</mml:mn><mml:mo>+</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn><mml:mo>+</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn><mml:mo>+</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn><mml:mo>+</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn><mml:mo>+</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo>+</mml:mo><mml:mn>5</mml:mn><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn><mml:mo>+</mml:mo><mml:mn>2</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn><mml:mo>+</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>4</mml:mn><mml:mo>+</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>4</mml:mn><mml:mo>+</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>4</mml:mn><mml:mo>+</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>4</mml:mn><mml:mo>+</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>8</mml:mn><mml:mo>+</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>4</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mo>+</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn><mml:mo>+</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mi mathvariant="italic">TDB</mml:mi><mml:mo>=</mml:mo><mml:mn>11</mml:mn><mml:mi mathvariant="italic">n</mml:mi><mml:mo>+</mml:mo><mml:mn>3</mml:mn><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>4</mml:mn><mml:mo>+</mml:mo><mml:mn>1</mml:mn><mml:mo>+</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mi mathvariant="italic">TDB</mml:mi></mml:math>
<tex-math><![CDATA[$1+n+n+n/2+n/2+n/2+n/2+n+5n/2+2(n/2+n/4+n/4+n/4+n/4+n/8+n/4)+n/2+(n/2)\mathit{TDB}=11n+3n/4+1+(n/2)\mathit{TDB}$]]></tex-math></alternatives></inline-formula>, and moreover, its time complexity is <inline-formula id="j_infor411_ineq_250"><alternatives>
<mml:math><mml:mi mathvariant="italic">O</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$O(n)$]]></tex-math></alternatives></inline-formula>. Therefore, it is a linear time algorithm.</p>
<p>The number of executions of total instructions in Algorithm <xref rid="j_infor411_fig_005">3</xref> is <inline-formula id="j_infor411_ineq_251"><alternatives>
<mml:math><mml:mn>1</mml:mn><mml:mo>+</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn><mml:mo>+</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn><mml:mo>+</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn><mml:mo>+</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn><mml:mo>+</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo>+</mml:mo><mml:mn>5</mml:mn><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn><mml:mo>+</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn><mml:mo>+</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn><mml:mo>+</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mi mathvariant="italic">TDB</mml:mi><mml:mo>=</mml:mo><mml:mn>8</mml:mn><mml:mi mathvariant="italic">n</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn><mml:mo>+</mml:mo><mml:mn>1</mml:mn><mml:mo>+</mml:mo><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">/</mml:mo><mml:mn>2</mml:mn><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo><mml:mi mathvariant="italic">TDB</mml:mi></mml:math>
<tex-math><![CDATA[$1+n+n+n/2+n/2+n/2+n/2+n+5n/2+n/2+n/2+(n/2)\mathit{TDB}=8n+n/2+1+(n/2)\mathit{TDB}$]]></tex-math></alternatives></inline-formula>, and moreover, its time complexity is <inline-formula id="j_infor411_ineq_252"><alternatives>
<mml:math><mml:mi mathvariant="italic">O</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">(</mml:mo><mml:mi mathvariant="italic">n</mml:mi><mml:mo mathvariant="normal" fence="true" stretchy="false">)</mml:mo></mml:math>
<tex-math><![CDATA[$O(n)$]]></tex-math></alternatives></inline-formula>. Therefore, it is also a linear time algorithm.</p>
<p>As mentioned above, time complexity of our algorithms in Algorithms <xref rid="j_infor411_fig_002">1</xref> and <xref rid="j_infor411_fig_005">3</xref> are both linear time algorithms. According to “Linear time is the best possible time complexity in situations where the algorithm has to sequentially read its entire input (Sudhan and Kalaiarasan, <xref ref-type="bibr" rid="j_infor411_ref_024">2017</xref>)”, our technology reads the entire database sequentially and meets the linear time requirements; therefore, our proposed technique is not only efficient in hiding phase but also efficient in extraction and restoration phases.</p>
</sec>
</sec>
<sec id="j_infor411_s_011">
<label>5</label>
<title>Discussion and Conclusion</title>
<p>In this study, we proposed a reversible hiding technique for relational databases by using the LSB matching method. In the experiments, we proved that our technique meets data hiding requirements, and it not only enables to recover the raw data, but also maintains a high hiding capacity. Additionally, we analyse the complexity of our algorithms to demonstrate our technique is efficient. Therefore, according to Xie <italic>et al.</italic> (<xref ref-type="bibr" rid="j_infor411_ref_027">2016</xref>), our algorithms can be applied to big data databases. To the best of our knowledge, it is the first reversible hiding technique for relational databases. Furthermore, we want to discuss two issues:</p>
<list>
<list-item id="j_infor411_li_005">
<label>1)</label>
<p>Application: In our opinion, our technique is most suitable for statistical databases. Statistical databases (SDB) have an inference problem: an attacker may infer the correct data from known information and well-chosen queries (Tendick and Matloff, <xref ref-type="bibr" rid="j_infor411_ref_026">1994</xref>); however, data perturbation can solve this problem. Data perturbation is a technique that adds noises into the sensitive data. Its method is to change data through mathematic formulas (such as adding and subtracting) (Adam and Worthmann, <xref ref-type="bibr" rid="j_infor411_ref_001">1989</xref>; Taneja <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor411_ref_025">2014</xref>). After SDB passes above-mentioned preprocess, it transforms these data into a perturbed SDB (Adam and Worthmann, <xref ref-type="bibr" rid="j_infor411_ref_001">1989</xref>; Taneja <italic>et al.</italic>, <xref ref-type="bibr" rid="j_infor411_ref_025">2014</xref>). The searchers only query the perturbed SDB, so they never get correct results. Therefore, it is hard for people to infer the correct data (Adam and Worthmann, <xref ref-type="bibr" rid="j_infor411_ref_001">1989</xref>).</p>
<p>Because our technique must copy data into the same two data in the relational database, an attacker may doubt whether this database has confidential messages or not. Therefore, attribute <inline-formula id="j_infor411_ineq_253"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${A_{i2}}$]]></tex-math></alternatives></inline-formula> can be put into the perturbed SDB after hiding phases, i.e. regarding the hiding method as mathematic formulas and regarding <inline-formula id="j_infor411_ineq_254"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${A_{i2}}$]]></tex-math></alternatives></inline-formula> as perturbed data. Because <inline-formula id="j_infor411_ineq_255"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${A_{i2}}$]]></tex-math></alternatives></inline-formula> is in the perturbed SDB and <inline-formula id="j_infor411_ineq_256"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${A_{i}}$]]></tex-math></alternatives></inline-formula> is in the original SDB, it can prevent the original SDB from having an additional data, so the attacker does not doubt if the SDB has confidential messages. During extraction and restoration phases, confidential messages is extracted and raw data is recovered through attribute <inline-formula id="j_infor411_ineq_257"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${A_{i}}$]]></tex-math></alternatives></inline-formula> in the SDB and attribute <inline-formula id="j_infor411_ineq_258"><alternatives>
<mml:math><mml:msub><mml:mrow><mml:mi mathvariant="italic">A</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">i</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:math>
<tex-math><![CDATA[${A_{i2}}$]]></tex-math></alternatives></inline-formula> in the perturbed SDB.</p>
</list-item>
<list-item id="j_infor411_li_006">
<label>2)</label>
<p>Future work: Because our research is not robust enough to resist malicious attacks, it is just a data hiding technique for relational databases. In the future, we will strengthen the robustness in order to make our technique become watermarking relational databases.</p>
</list-item>
</list>
</sec>
</body>
<back>
<ref-list id="j_infor411_reflist_001">
<title>References</title>
<ref id="j_infor411_ref_001">
<mixed-citation publication-type="journal"><string-name><surname>Adam</surname>, <given-names>N.R.</given-names></string-name>, <string-name><surname>Worthmann</surname>, <given-names>J.C.</given-names></string-name> (<year>1989</year>). <article-title>Security-control methods for statistical databases: a comparative study</article-title>. <source>ACM Computing Surveys</source>, <volume>21</volume>, <fpage>515</fpage>–<lpage>526</lpage>.</mixed-citation>
</ref>
<ref id="j_infor411_ref_002">
<mixed-citation publication-type="chapter"><string-name><surname>Agrawal</surname>, <given-names>R.</given-names></string-name>, <string-name><surname>Kiernan</surname>, <given-names>J.</given-names></string-name> (<year>2002</year>). <chapter-title>Watermarking relational databases</chapter-title>. In: <source>Proceedings of the 28th International Conference on Very Large Data Bases</source>, <conf-loc>Hong Kong, China</conf-loc>, pp. <fpage>155</fpage>–<lpage>166</lpage>.</mixed-citation>
</ref>
<ref id="j_infor411_ref_003">
<mixed-citation publication-type="journal"><string-name><surname>Bhesaniya</surname>, <given-names>M.</given-names></string-name>, <string-name><surname>Rathod</surname>, <given-names>J.N.</given-names></string-name>, <string-name><surname>Thanki</surname>, <given-names>K.</given-names></string-name> (<year>2014</year>). <article-title>Various approaches for watermarking of relational databases</article-title>. <source>International Journal of Engineering Science and Innovative Technology</source>, <volume>3</volume>, <fpage>215</fpage>–<lpage>220</lpage>.</mixed-citation>
</ref>
<ref id="j_infor411_ref_004">
<mixed-citation publication-type="journal"><string-name><surname>Camara</surname>, <given-names>L.</given-names></string-name>, <string-name><surname>Li</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Li</surname>, <given-names>R.</given-names></string-name>, <string-name><surname>Xie</surname>, <given-names>W.</given-names></string-name> (<year>2014</year>). <article-title>Distortion-free watermarking approach for relational database integrity checking</article-title>. <source>Mathematical Problems in Engineering</source>, <volume>2014</volume>, <fpage>10</fpage>.</mixed-citation>
</ref>
<ref id="j_infor411_ref_005">
<mixed-citation publication-type="journal"><string-name><surname>Chen</surname>, <given-names>H.F.</given-names></string-name>, <string-name><surname>Chang</surname>, <given-names>C.C.</given-names></string-name>, <string-name><surname>Chen</surname>, <given-names>K.M.</given-names></string-name> (<year>2020</year>). <article-title>Reversible data hiding schemes in encrypted images based on the paillier cryptosystem</article-title>. <source>International Journal of Network Security</source>, <volume>22</volume>, <fpage>523</fpage>–<lpage>533</lpage>.</mixed-citation>
</ref>
<ref id="j_infor411_ref_006">
<mixed-citation publication-type="journal"><string-name><surname>Chen</surname>, <given-names>X.</given-names></string-name>, <string-name><surname>Guo</surname>, <given-names>W.</given-names></string-name> (<year>2020</year>). <article-title>Reversible data hiding scheme based on fully exploiting the orientation combinations of dual stego-images</article-title>. <source>International Journal of Network Security</source>, <volume>22</volume>, <fpage>126</fpage>–<lpage>135</lpage>.</mixed-citation>
</ref>
<ref id="j_infor411_ref_007">
<mixed-citation publication-type="journal"><string-name><surname>Chen</surname>, <given-names>Y.</given-names></string-name>, <string-name><surname>Lin</surname>, <given-names>J.Y.</given-names></string-name>, <string-name><surname>Chang</surname>, <given-names>C.C.</given-names></string-name>, <string-name><surname>Hu</surname>, <given-names>Y.C.</given-names></string-name> (<year>2020</year>). <article-title>Low-computation-cost data hiding scheme based on turtle shell</article-title>. <source>International Journal of Network Security</source>, <volume>22</volume>, <fpage>296</fpage>–<lpage>305</lpage>.</mixed-citation>
</ref>
<ref id="j_infor411_ref_008">
<mixed-citation publication-type="journal"><string-name><surname>Dwivedi</surname>, <given-names>A.K.</given-names></string-name>, <string-name><surname>Sharma</surname>, <given-names>B.K.</given-names></string-name>, <string-name><surname>Vyas</surname>, <given-names>A.K.</given-names></string-name> (<year>2014</year>). <article-title>Watermarking techniques for ownership protection of relational databases</article-title>. <source>International Journal of Emerging Technology and Advanced Engineering</source>, <volume>4</volume>, <fpage>368</fpage>–<lpage>375</lpage>.</mixed-citation>
</ref>
<ref id="j_infor411_ref_009">
<mixed-citation publication-type="journal"><string-name><surname>Franco-Contreras</surname>, <given-names>J.</given-names></string-name>, <string-name><surname>Coatrieux</surname>, <given-names>G.</given-names></string-name>, <string-name><surname>Cuppens</surname>, <given-names>F.</given-names></string-name>, <string-name><surname>Cuppens-Boulahia</surname>, <given-names>N.</given-names></string-name>, <string-name><surname>Roux</surname>, <given-names>C.</given-names></string-name> (<year>2014</year>). <article-title>Robust lossless watermarking of relational databases based on circular histogram modulation</article-title>. <source>IEEE Transactions on Information Forensics and Security</source>, <volume>9</volume>, <fpage>397</fpage>–<lpage>410</lpage>.</mixed-citation>
</ref>
<ref id="j_infor411_ref_010">
<mixed-citation publication-type="chapter"><string-name><surname>Gupta</surname>, <given-names>G.</given-names></string-name>, <string-name><surname>Pieprzyk</surname>, <given-names>J.</given-names></string-name> (<year>2009</year>). <chapter-title>Database relation watermarking resilient against secondary watermarking attacks</chapter-title>. In: <source>International Conference on Information Systems Security</source>. <publisher-name>Springer</publisher-name>, <publisher-loc>Berlin, Heidelberg</publisher-loc>, pp. <fpage>222</fpage>–<lpage>236</lpage>.</mixed-citation>
</ref>
<ref id="j_infor411_ref_011">
<mixed-citation publication-type="chapter"><string-name><surname>Hanyurwimfura</surname>, <given-names>D.</given-names></string-name>, <string-name><surname>Liu</surname>, <given-names>Y.</given-names></string-name>, <string-name><surname>Liu</surname>, <given-names>Z.</given-names></string-name> (<year>2010</year>). <chapter-title>Text format based relational database watermarking for non-numeric data</chapter-title>. In: <source>2010 International Conference On Computer Design And Appliations, ICCDA 2010</source>. <publisher-name>IEEE</publisher-name>, pp. <fpage>V4-312</fpage>–<lpage>V4-316</lpage>.</mixed-citation>
</ref>
<ref id="j_infor411_ref_012">
<mixed-citation publication-type="journal"><string-name><surname>Iftikhar</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Kamran</surname>, <given-names>M.</given-names></string-name>, <string-name><surname>Anwar</surname>, <given-names>Z.</given-names></string-name> (<year>2015</year>). <article-title>RRW - a robust and reversible watermarking technique for relational data</article-title>. <source>IEEE Transactions on Knowledge and Data Engineering</source>, <volume>27</volume>, <fpage>1132</fpage>–<lpage>1145</lpage>.</mixed-citation>
</ref>
<ref id="j_infor411_ref_013">
<mixed-citation publication-type="journal"><string-name><surname>Kamran</surname>, <given-names>M.</given-names></string-name>, <string-name><surname>Suhail</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Farooq</surname>, <given-names>M.</given-names></string-name> (<year>2013</year>). <article-title>A robust, distortion minimizing technique for watermarking relational databases using once-for-all usability constraints</article-title>. <source>IEEE Transactions on Knowledge and Data Engineering</source>, <volume>25</volume>, <fpage>2694</fpage>–<lpage>2707</lpage>.</mixed-citation>
</ref>
<ref id="j_infor411_ref_014">
<mixed-citation publication-type="book"><string-name><surname>Ke</surname>, <given-names>C.H.</given-names></string-name>, <string-name><surname>Wang</surname>, <given-names>M.S.</given-names></string-name> (<year>2006</year>). <source>A Study of Watermarking in Relational Database. Department of Engineering Science</source>. <publisher-name>National Cheng Kung University</publisher-name>, <publisher-loc>Taiwan</publisher-loc>.</mixed-citation>
</ref>
<ref id="j_infor411_ref_015">
<mixed-citation publication-type="chapter"><string-name><surname>Khanna</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Zane</surname>, <given-names>F.</given-names></string-name> (<year>2000</year>). <chapter-title>Watermarking maps: hiding information in structured data</chapter-title>. In: <source>Proceedings of the Eleventh Annual ACM-SIAM Symposium on Discrete Algorithms</source>, <conf-loc>San Francisco, California, USA</conf-loc>, pp. <fpage>596</fpage>–<lpage>605</lpage>.</mixed-citation>
</ref>
<ref id="j_infor411_ref_016">
<mixed-citation publication-type="chapter"><string-name><surname>Li</surname>, <given-names>Y.</given-names></string-name>, <string-name><surname>Swarup</surname>, <given-names>V.</given-names></string-name>, <string-name><surname>Jajodia</surname>, <given-names>S.</given-names></string-name> (<year>2003</year>). <chapter-title>Constructing a virtual primary key for fingerprinting relational data</chapter-title>. In: <source>Proceedings of the 3rd ACM Workshop on Digital Rights Management</source>, <conf-loc>Washington, DC, USA</conf-loc>. <publisher-name>ACM</publisher-name> pp. <fpage>133</fpage>–<lpage>141</lpage>.</mixed-citation>
</ref>
<ref id="j_infor411_ref_017">
<mixed-citation publication-type="chapter"><string-name><surname>Li</surname>, <given-names>Y.</given-names></string-name>, <string-name><surname>Guo</surname>, <given-names>H.</given-names></string-name>, <string-name><surname>Jajodia</surname>, <given-names>S.</given-names></string-name> (<year>2004</year>). <chapter-title>Tamper detection and localization for categorical data using fragile watermarks</chapter-title>. In: <source>Proceedings of the 4th ACM Workshop on Digital Rights Management</source>, <conf-loc>Washington DC, USA, ACM</conf-loc>, pp. <fpage>73</fpage>–<lpage>82</lpage>.</mixed-citation>
</ref>
<ref id="j_infor411_ref_018">
<mixed-citation publication-type="journal"><string-name><surname>Lu</surname>, <given-names>T.C.</given-names></string-name>, <string-name><surname>Tseng</surname>, <given-names>C.Y.</given-names></string-name>, <string-name><surname>Wu</surname>, <given-names>J.H.</given-names></string-name> (<year>2015</year>a). <article-title>Dual imaging-based reversible hiding technique using lsb matching</article-title>. <source>Signal Processing</source>, <volume>108</volume>, <fpage>77</fpage>–<lpage>89</lpage>.</mixed-citation>
</ref>
<ref id="j_infor411_ref_019">
<mixed-citation publication-type="journal"><string-name><surname>Lu</surname>, <given-names>T.C.</given-names></string-name>, <string-name><surname>Wu</surname>, <given-names>J.H.</given-names></string-name>, <string-name><surname>Huang</surname>, <given-names>C.C.</given-names></string-name> (<year>2015</year>b). <article-title>Dual-image-based reversible data hiding method using center folding strategy</article-title>. <source>Signal Processing</source>, <volume>115</volume>, <fpage>195</fpage>–<lpage>213</lpage>.</mixed-citation>
</ref>
<ref id="j_infor411_ref_020">
<mixed-citation publication-type="chapter"><string-name><surname>Mehta</surname>, <given-names>B.B.</given-names></string-name>, <string-name><surname>Rao</surname>, <given-names>U.P.</given-names></string-name> (<year>2011</year>). <chapter-title>A novel approach as multi-place watermarking for security in database</chapter-title>. In: <source>Int’l Conf. Security and Management</source>, <conf-loc>San Diego, California, USA, SAM</conf-loc>, pp. <fpage>703</fpage>–<lpage>707</lpage>.</mixed-citation>
</ref>
<ref id="j_infor411_ref_021">
<mixed-citation publication-type="chapter"><string-name><surname>Melkundi</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Chandankhede</surname>, <given-names>C.</given-names></string-name> (<year>2015</year>). <chapter-title>A robust technique for relational database watermarking and verification</chapter-title>. In: <source>2015 International Conference on Communication, Information &amp; Computing Technology (ICCICT)</source>, <conf-loc>Mumbai, India</conf-loc>. <publisher-name>IEEE</publisher-name>, pp. <fpage>1</fpage>–<lpage>7</lpage>.</mixed-citation>
</ref>
<ref id="j_infor411_ref_022">
<mixed-citation publication-type="journal"><string-name><surname>Mielikainen</surname>, <given-names>J.</given-names></string-name> (<year>2006</year>). <article-title>LSB matching revisited</article-title>. <source>IEEE Signal Processing Letters</source>, <volume>13</volume>, <fpage>285</fpage>–<lpage>287</lpage>.</mixed-citation>
</ref>
<ref id="j_infor411_ref_023">
<mixed-citation publication-type="chapter"><string-name><surname>Mohanpurkar</surname>, <given-names>A.A.</given-names></string-name>, <string-name><surname>Joshi</surname>, <given-names>M.S.</given-names></string-name> (<year>2011</year>). <chapter-title>Applying watermarking for copyright protection, traitor identification and joint ownership: A review</chapter-title>. In: <source>2011 World Congress on Information and Communication Technologies (WICT)</source>. <publisher-name>IEEE</publisher-name>, pp. <fpage>1014</fpage>–<lpage>1019</lpage>.</mixed-citation>
</ref>
<ref id="j_infor411_ref_024">
<mixed-citation publication-type="journal"><string-name><surname>Sudhan</surname>, <given-names>S.H.</given-names></string-name>, <string-name><surname>Kalaiarasan</surname>, <given-names>C.</given-names></string-name> (<year>2017</year>). <article-title>Study on sorting algorithm and position determining sort</article-title>. <source>International Research Journal of Engineering and Technology (IRJET)</source>, <volume>4</volume>(<issue>7</issue>),</mixed-citation>
</ref>
<ref id="j_infor411_ref_025">
<mixed-citation publication-type="journal"><string-name><surname>Taneja</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Khanna</surname>, <given-names>S.</given-names></string-name>, <string-name><surname>Tilwalia</surname>, <given-names>H.</given-names></string-name> (<year>2014</year>). <article-title>A review on privacy preserving data mining: techniques and research challenges</article-title>. <source>International Journal of Computer Science and Information Technologies</source>, <volume>5</volume>, <fpage>2310</fpage>–<lpage>2315</lpage>.</mixed-citation>
</ref>
<ref id="j_infor411_ref_026">
<mixed-citation publication-type="journal"><string-name><surname>Tendick</surname>, <given-names>P.</given-names></string-name>, <string-name><surname>Matloff</surname>, <given-names>N.</given-names></string-name> (<year>1994</year>). <article-title>A modified random perturbation method for database security</article-title>. <source>ACM Transactions on Database Systems</source>, <volume>19</volume>, <fpage>47</fpage>–<lpage>63</lpage>.</mixed-citation>
</ref>
<ref id="j_infor411_ref_027">
<mixed-citation publication-type="journal"><string-name><surname>Xie</surname>, <given-names>M.R.</given-names></string-name>, <string-name><surname>Wu</surname>, <given-names>C.C.</given-names></string-name>, <string-name><surname>Shen</surname>, <given-names>J.J.</given-names></string-name>, <string-name><surname>Hwang</surname>, <given-names>M.S.</given-names></string-name> (<year>2016</year>). <article-title>A survey of data distortion watermarking techniques for relational databases</article-title>. <source>International Journal of Network Security</source>, <volume>18</volume>, <fpage>1022</fpage>–<lpage>1033</lpage>.</mixed-citation>
</ref>
<ref id="j_infor411_ref_028">
<mixed-citation publication-type="journal"><string-name><surname>Zhang</surname>, <given-names>Y.</given-names></string-name>, <string-name><surname>Yang</surname>, <given-names>B.</given-names></string-name>, <string-name><surname>Niu</surname>, <given-names>X.M.</given-names></string-name> (<year>2006</year>). <article-title>Reversible watermarking for relational database authentication</article-title>. <source>Journal of Computers</source>, <volume>17</volume>, <fpage>59</fpage>–<lpage>66</lpage>.</mixed-citation>
</ref>
</ref-list>
</back>
</article>