Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Linux中如何做到这一点,以便在读取文件时,当前应用程序从另一个应用程序接收数据?_Linux_Cryptography - Fatal编程技术网

在Linux中如何做到这一点,以便在读取文件时,当前应用程序从另一个应用程序接收数据?

在Linux中如何做到这一点,以便在读取文件时,当前应用程序从另一个应用程序接收数据?,linux,cryptography,Linux,Cryptography,假设我有一个文件“hello.txt”,其中包含文本“hello,world!” 我有一个应用程序“textreader”,它读取hello.txt文件并将其放入stdout。 接下来,我对文件“hello.txt”进行了加密。可以通过一个特殊的库对其进行解密,该库可以逐字节读取文件 如何使用我的库(或我的应用程序)使用应用程序“textreader”作为普通文件读取加密文件?根据这个问题,我不能写一些临时文件 可以使用命名管道(mkfifo),但前提是要寻求支持。文件必须随机读取 如果我没有“

假设我有一个文件“hello.txt”,其中包含文本“hello,world!” 我有一个应用程序“textreader”,它读取hello.txt文件并将其放入stdout。 接下来,我对文件“hello.txt”进行了加密。可以通过一个特殊的库对其进行解密,该库可以逐字节读取文件

如何使用我的库(或我的应用程序)使用应用程序“textreader”作为普通文件读取加密文件?根据这个问题,我不能写一些临时文件

可以使用命名管道(mkfifo),但前提是要寻求支持。文件必须随机读取


如果我没有“textreader”的源代码,有人知道我该怎么做吗?

将加密文件加载到内存中并从内存缓冲区解密怎么样?
一些脚本语言(如perl、python等)可以读取整个文件并将其分配给变量

如何将加密文件加载到内存中并从内存缓冲区解密?
一些脚本语言,如perl、python等,可以读取整个文件并将其分配给变量,编写一个共享库来替换标准的Linux I/O例程,以及

如果应用程序动态链接到C库,这将起作用-如果“textreader”直接进行系统调用,那么拦截将不起作用

另见:


编写一个共享库,用于替换标准的Linux I/O例程,以及

如果应用程序动态链接到C库,这将起作用-如果“textreader”直接进行系统调用,那么拦截将不起作用

另见:


    • 简单地使用stdin怎么样

      如果textreader应用程序将
      hello.txt
      转换为标准输出,只需通过管道将textreader的输出传输到您自己的应用程序/脚本。例如:

      $。/text阅读器|./myapp

      根据您决定在应用程序中使用的语言,您可以用处理大多数流的相同方式处理stdin

      以下答案应为您提供有关如何以不同语言阅读stdin的更多信息:

      • Python:
      • C++:
      • PHP:
      维基百科也是

      编辑:如您最初所问,大多数流都是可查找的。我在C++中写了一个小例子,展示了如何查找<代码> STDIN < /C> >
      #include <iostream>
      
      int main(void) {
      
          int i = 0;
          std::string buffer;
      
          while (not std::cin.eof()) {
              std::getline(std::cin, buffer);
              if (buffer.find("while") != std::string::npos)
                  if (i < 10)
                      std::cin.seekg(0, std::ios::beg);
                  else
                      std::cin.seekg(0, std::ios::end);
              std::cout << "Line " << i++ << ": " << buffer << std::endl;
          }
      
      return 0;
      
      }   
      
      #包括
      内部主(空){
      int i=0;
      字符串缓冲区;
      while(不是std::cin.eof()){
      std::getline(std::cin,buffer);
      if(buffer.find(“while”)!=std::string::npos)
      如果(i<10)
      标准::cin.seekg(0,标准::ios::beg);
      其他的
      标准::cin.seekg(0,标准::ios::结束);
      
      std::cout简单使用stdin怎么样

      如果textreader应用程序将
      hello.txt
      转换为标准输出,只需将textreader的输出通过管道传输到您自己的应用程序/脚本即可。例如:

      $。/text阅读器|./myapp

      根据您决定在应用程序中使用的语言,您可以用处理大多数流的相同方式处理stdin

      以下答案应为您提供有关如何以不同语言阅读stdin的更多信息:

      • Python:
      • C++:
      • PHP:
      维基百科也是

      <> > > >编辑:大多数流是可搜索的,正如您最初所问的。我在C++中写了一个小例子,说明如何查找<代码> STDIN < /C> >
      #include <iostream>
      
      int main(void) {
      
          int i = 0;
          std::string buffer;
      
          while (not std::cin.eof()) {
              std::getline(std::cin, buffer);
              if (buffer.find("while") != std::string::npos)
                  if (i < 10)
                      std::cin.seekg(0, std::ios::beg);
                  else
                      std::cin.seekg(0, std::ios::end);
              std::cout << "Line " << i++ << ": " << buffer << std::endl;
          }
      
      return 0;
      
      }   
      
      #包括
      内部主(空){
      int i=0;
      字符串缓冲区;
      while(不是std::cin.eof()){
      std::getline(std::cin,buffer);
      if(buffer.find(“while”)!=std::string::npos)
      如果(i<10)
      标准::cin.seekg(0,标准::ios::beg);
      其他的
      标准::cin.seekg(0,标准::ios::结束);
      
      std::cout通常这是使用文件系统过滤器驱动程序完成的,该驱动程序将动态执行解密。为了支持随机搜索,您必须在独立块(64-256Kb大)中加密数据并以解密的形式将这些块缓存在内存中。这不是一项简单的任务,但可以完成。我不知道如何在Linux上实现过滤器驱动程序(我们为Windows提供了类似的产品).

      通常使用文件系统过滤器驱动程序完成,该驱动程序将动态执行解密。为了支持随机搜索,您必须在独立块(64-256Kb大)中加密数据并以解密的形式将这些块缓存在内存中。这不是一项简单的任务,但可以完成。我不知道如何在Linux上实现过滤器驱动程序(我们为Windows提供了类似的产品)该方法应该支持随机查找。从我的理解来看,标准输入只能是串行的。@ USER 12429 96我已经编辑了我的答案,在C++中添加了一个简单的查找例子。从STDIN中读取与从大多数流中读取没有什么不同。该方法应该支持随机搜索。正如我所理解的。@ USE12429我已经编辑了我的答案,在C++中添加了一个简单的查找例子。从STDIN中读取与从大多数流中读取没有什么不同。我也在考虑。它不是最优雅的解决方案,但显然没有其他的。我也在考虑。它不是最优雅的解决方案,但显然没有其他。