你能在文本中隐藏数据吗?

Posted

技术标签:

【中文标题】你能在文本中隐藏数据吗?【英文标题】:Can you hide data in text? 【发布时间】:2010-09-25 14:59:34 【问题描述】:

我希望在页面上放置一些文本并在该文本中隐藏一些数据。有谁知道过去曾用于解决此问题的任何方法/模式?

示例:我有以下文字: “猫坐在狗身上,很开心。”

我也有数字 123。我想在那个句子中隐藏这个数字,这样句子就可以放在网页上,只有知道的人才能找到数据。

【问题讨论】:

【参考方案1】:

当然可以。

您所描述的是一个广泛的描述,称为Steganography。

例如,您可能会以这样一种方式对数字进行编码,即计算单词的数量,直到看到字母 B,在这种情况下,123 可以编码为:

You belong to the beautiful group of people being elite.

问题是,想要解码您的消息的人必须知道您的算法。

编辑我注意到我的号码差了一位。从 0 开始计数,您会看到数字 123。

【讨论】:

【参考方案2】:

实际上,html 使执行此操作变得非常容易。不需要真正狡猾的隐写术等。让我们看看:

这句话嵌入123,然后停止嵌入。

这句话嵌入0102,然后停止嵌入。

(我们必须看看它在 Markdown 中是否真的有效,但我怀疑是这样。)诚然,如果你知道有 something 需要寻找,那是很明显的,但我认为你会同意这对不经意的观察者来说并不明显。

我把它作为一个小谜题来制定方案,但如果你想明确解释,请添加评论。

【讨论】:

如果您这样做,请务必在您的 HTTP 服务器上启用压缩! 是的,如果您要传输大量数据,可能会有些笨拙。【参考方案3】:

解决这个问题有非常复杂的方法,但是您可以选择一个非常简单的方法。例如。为每个数字定义一个形容词:

0. beautiful
1. harmless
2. evil
3. colorful
4. weird

等等。现在选择您选择的句子并将占位符放入形容词所属的句子中。

"The adj cat sat on the adj dog and the adj cat was happy."

你的号码是123,所以你的句子是

"The harmless cat sat on the evil dog and the colorful cat was happy."

解析器可以轻松获取句子,将其拆分为单词,在上表中找到形容词,然后将它们转换回数字。

The -> ?
harmless -> 1
cat -> ?
sat -> ?
on -> ?
the -> ?
evil -> 2
:

最后你又得到了 123。

一旦人们知道句子中隐藏着信息,算法就很容易被破解。如果您通过为每个数字定义多个形容词来添加变体,则可以使其更难中断。而不是

1. harmless

你可以定义

1. harmless/stupid/blue/fashionable

当你需要编码 1 时,随机选择上面的任何一个词。由于这些都映射到数字 1,反向解析器不会关心其中打印了哪些单词,结果将始终为 1。这种随机化将使算法更难逆向工程。

【讨论】:

【参考方案4】:

我认为你所说的高层次是隐写术。 http://en.wikipedia.org/wiki/Steganography

现代技术部分应该可以帮助您入门:http://en.wikipedia.org/wiki/Steganography#Modern_steganographic_techniques

【讨论】:

【参考方案5】:

我认为您正在寻找的是一种叫做隐写术的东西。 Corinna John 在 CodeProject 上有大量关于该主题的文章。

http://www.codeproject.com/script/Articles/MemberArticles.aspx?amid=475133

【讨论】:

添加..如果您点击 CodeProject 上的链接,您将进入她的主页.. 似乎专注于自己动手做隐写术...binary-universe.net【参考方案6】:

可能有一种算法可以将该句子变成 123,但我认为一般来说,如果您需要存储任何可能的数值,您将需要接受对文本的一些修改!

【讨论】:

【参考方案7】:

如果“文本”实际上是图像,那么您可以使用 steganography 隐藏其中的数据 - 数据隐藏在二进制图像文件中,而不会影响图像的外观。

【讨论】:

在图像中隐藏数据只是隐写术的一个分支。【参考方案8】:

据此thread:

教授。 Mikhail Atallah 等。人。普渡大学对 watermarking text 进行了大量研究。

该方法使用短语的 TMR (Text Meaning Representation) 对位进行编码,方法是执行较小的转换,将 TMR 定位在与定义的规范形式一定距离处。

(另一种给文字加水印的方法是presented here)

这可能是另一种在文本中隐藏文本的方法,以及其他答案中描述的隐写术方法。

【讨论】:

【参考方案9】:

Jon Skeet 提到的方法与 Matthew Kwan 的“SNOW”方法非常相似。它们都在文本中隐藏少量任意信息,而不添加、删除或更改源文本中的任何单词。 两者都将秘密信息编码在通常不相关、通常不可见的空白中—— 单词之间和行尾的额外空格和制表符。

【讨论】:

【参考方案10】:

这是一个将加密数据转换为“自然”文本消息的原型。

http://herosys.net/w/project/text-steganography-hide-text-in-spam-sms

将“明天早上 8 点在大学东门见你”等源文本转换为看起来像垃圾邮件的短文本消息。

“有史以来最好的房子!你千万不要错过它。1000-3000 平方英尺。每平方英尺 15-80 美元。请致电 123-456-7890”。

算法是你只需创建一个语法图,并为每个单词创建一个候选表。就像 BASE64 一样,但索引表会根据您预定义的上下文进行更改。

【讨论】:

第一个链接是 404。【参考方案11】:

好吧,您可以尝试类似this...不过,不确定这是否正是您想要的。

【讨论】:

【参考方案12】:

我有两个方案具有良好的安全性,但要权衡相当低的隐写嵌入率。其中一个非常简单,但对于任意用户给定的文本,每行的嵌入率只有 1 位,而另一个需要用户在软件的指导下编写封面文本,嵌入率在 [0.5 , 1.0] 每字。查看我的主页 mok-kong-shen.de

【讨论】:

这看起来更像是一个仅链接的答案。请在此处总结相关信息以获得完整答案,并在末尾提供链接以获取更多阅读/参考/上下文。 @Reti43:谢谢。一种名为 EMAILSTEGANO 的方案修改了文本(电子邮件等)中的字数,使得一行中的字数 mod 2,即奇偶校验,给出了隐写位。另一个,使用一个大的英文单词列表(有这样的可下载的)并通过会话相关的密钥对其进行洗牌,以获得两个大约。相等的子列表。一个子列表中的单词表示 0,另一个表示 1。 “to”、“in”等不包括在这些列表中。要求用户更改他自己选择的单词,以防该单词恰好位于当前隐写位要求的错误子列表中。

以上是关于你能在文本中隐藏数据吗?的主要内容,如果未能解决你的问题,请参考以下文章

你能在kivy中获得设备的物理尺寸吗?

你能在 Rails 中获取数据库用户名、密码、数据库名称吗?

你能在 IDA 中搜索相邻字节之间的差异吗?

你能在 TensorFlow 中组合两个神经网络吗?

你能在VBA中更改数据透视表的源代码吗?

你能在一个Hibernate会话中拥有多个交易吗?