通过修改元素的最低有效位在大指针数组中隐藏数字

纳特

直接我会说我几乎不知道我在这里做什么 - 我在掌握 C 中的按位运算符时遇到了很大的麻烦。作为我的一门课程的练习,我应该隐藏一个数字(无符号整数)在包含数字的大指针数组(无符号字符)中。我正在使用 srand(带有密钥,以便我以后可以对其进行解码)来选择数组的特定元素,然后取出我应该隐藏的数字的一位(遍历所有位)并更改数组元素的最低有效位。选择元素。

虽然我得到了大致的想法,但尽管使用谷歌搜索,但我无法弄清楚位操作。因此size,我应该在循环的第 i 次运行中进行编码(i-th大小的位)并随机选择current_element这是我想出的来获取位然后更改元素的方法。

for (i=0; i<32; i++){    
    tmp = rand() % max;
    current_element = array[tmp];
    current_element ^= ((size >> i)  & 0x01)<<7;
}

要解码,我会以类比的方式编写它(其中大小被擦除为我试图将解码后的数字写入的无符号字符):

for (i=0; i<32; i++){
        tmp = rand() % max;
        current_element = array[tmp];
        size = size ^ ((current_pixel.blue<<0)<<7);

    }

这两个函数具有不同的功能,并且srand()预先在每个函数中重新播种。

但这些显然不起作用,我什至不知道是哪一个(我只能检查它是否正确解码)。说实话,这些大多是从我在网上找到的其他东西复制而来的,因为到目前为止,我无法对单个位进行操作。所以我会很感激关于这里出了什么问题的一些建议(我知道这里可能一切都错了,而且都是胡言乱语,但我一直在努力修复它,但无济于事)。

阿雪莉

我只是间接回答你的问题。我将给你一些许多新程序员需要的温和建议。
如果你想学习编程,停止谷歌搜索并思考。

将问题分解为步骤。写伪代码:

  encode:
     for each bit in message_word:
        select random array element
        if bit is set:
           toggle LSB of element.

  decode:
     for each bit in message_word:
        select random element
        if LSB is toggled:
           set bit in message_word

现在,为每个步骤编写 C 代码。你实际上拥有大部分的碎片。

 // for each bit in message_word
 for (i=0;i<sizeof(message_word); i++) {
   // select random array element
   tmp = rand() % max;
   current_element = array[tmp];
   // if bit is set:
   if ( bit_is_set(message_word,i) ) {
       // toggle LSB of element.
       toggle_lsb(current_element);
   }
 }

现在您已经掌握了基本步骤,也许您可​​以在谷歌上搜索“如何稍微切换一下”但请确保在插入之前了解答案。

int bit_is_set(word,bit) { return ((word>>bit)&0x01); }
int toggle_lsb(word) { return word ^ 1; }

但是 - 这仍然行不通。为什么?是时候再想想了。您复制了随机选择的数组索引处的值。你在副本中切换了一点。这将对阵列产生什么影响?

解决这个问题,至少还有一个挑战。在解码功能中,你将如何实现is_lsb_toggled您如何知道给定的位应该是 1 还是 0?您拥有所需的所有信息。祝你好运。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在javascript中获取数字的最低有效位的最有效方法是什么?

来自分类Dev

如何通过nextjs中不同元素的onClick修改元素?

来自分类Dev

这是使用C ++中的函数查找最低数字的最有效方法吗?

来自分类Dev

最低有效“0”数字的数量影响 Pandas 中的值

来自分类Dev

阶乘的最低有效非零数字

来自分类Dev

在MATLAB中将数字的最低有效位加1

来自分类Dev

通过指向数组元素的指针修改数组的元素

来自分类Dev

如何修改元素中现有的<content>?

来自分类Dev

是否存在通过引用进行元素选择和通过指针操作进行元素选择都有效的情况?

来自分类Dev

在JavaScript中获得最低有效位

来自分类Dev

更改Java中的最低有效位(LSB)

来自分类Dev

覆盖单词中的最低有效位

来自分类Dev

如何删除Java中的最低有效位?

来自分类Dev

更改Java中的最低有效位(LSB)

来自分类Dev

在Python中如何找到最低有效位数

来自分类Dev

在numpy的数组提取每个元素的最后两位数字的有效途径

来自分类Dev

有效地获取javascript中的最高和最低有效位

来自分类Dev

通过引用传递的指针对C ++中的getadrinfo有效

来自分类Dev

C中的分段错误,同时声明了大指针数组

来自分类Dev

当我粘贴大量数字时,为什么Excel会舍入最低有效数字?

来自分类Dev

有效地修改可观察集合元素

来自分类Dev

哪种更有效的方式在C / C ++中存储字符串,数组或指针?

来自分类Dev

有效地修改 numpy 数组

来自分类Dev

在Matlab中使用最低有效位提取隐藏图像

来自分类Dev

Python:在嵌套字典中修改元素

来自分类Dev

通过数据框中的数字有效填充NA单元

来自分类Dev

如何通过指针从数组中删除元素

来自分类Dev

在Scala中修改元组数组

来自分类Dev

如何通过urlfetchapp发送有效载荷中带有数组的发布请求

Related 相关文章

  1. 1

    在javascript中获取数字的最低有效位的最有效方法是什么?

  2. 2

    如何通过nextjs中不同元素的onClick修改元素?

  3. 3

    这是使用C ++中的函数查找最低数字的最有效方法吗?

  4. 4

    最低有效“0”数字的数量影响 Pandas 中的值

  5. 5

    阶乘的最低有效非零数字

  6. 6

    在MATLAB中将数字的最低有效位加1

  7. 7

    通过指向数组元素的指针修改数组的元素

  8. 8

    如何修改元素中现有的<content>?

  9. 9

    是否存在通过引用进行元素选择和通过指针操作进行元素选择都有效的情况?

  10. 10

    在JavaScript中获得最低有效位

  11. 11

    更改Java中的最低有效位(LSB)

  12. 12

    覆盖单词中的最低有效位

  13. 13

    如何删除Java中的最低有效位?

  14. 14

    更改Java中的最低有效位(LSB)

  15. 15

    在Python中如何找到最低有效位数

  16. 16

    在numpy的数组提取每个元素的最后两位数字的有效途径

  17. 17

    有效地获取javascript中的最高和最低有效位

  18. 18

    通过引用传递的指针对C ++中的getadrinfo有效

  19. 19

    C中的分段错误,同时声明了大指针数组

  20. 20

    当我粘贴大量数字时,为什么Excel会舍入最低有效数字?

  21. 21

    有效地修改可观察集合元素

  22. 22

    哪种更有效的方式在C / C ++中存储字符串,数组或指针?

  23. 23

    有效地修改 numpy 数组

  24. 24

    在Matlab中使用最低有效位提取隐藏图像

  25. 25

    Python:在嵌套字典中修改元素

  26. 26

    通过数据框中的数字有效填充NA单元

  27. 27

    如何通过指针从数组中删除元素

  28. 28

    在Scala中修改元组数组

  29. 29

    如何通过urlfetchapp发送有效载荷中带有数组的发布请求

热门标签

归档