如何在实时编写文本文件时对其进行加密?

时间:2015-10-27 21:41:01

标签: java encryption

我正在键入一个程序,用于在日志文件中存储字符串。问题是角色可能不止一个或只有一个,而且速度非常快(可能不到第二个)。

我正在做一个实验,想法是像一个简单的文本编辑器那样做,你按下的每个键都会实时加密存储在一个文件中。还将有表情符号,由" [:SMILE]"表示。并且使用按钮到达,所以出现。就此而言,字符可以是长度> = 1。

encriptation方法将使用asimetric,我不知道RSA或PGP,哪个更好?

我想找到一个很好的加密方法,因为加密过程可能会很慢。

一个例子是使用一个缓冲区,当它完全解放它并加密它,并将文件附加到1024的加密块中,并使用此块大小解密它。

我不知道这是否是优化的解决方案......如何处理加密生成的加密日志?

1 个答案:

答案 0 :(得分:0)

我找到了两个不同的选项,都符合“缓冲区”。

一个是缓冲区并在缓冲区达到大小时将其发送到密码。 另一种是以时间的方式做,ergo,每次发送到密码(例如两秒)

第一个是使用CharBuffer创建缓冲区。当缓冲区达到缓冲区大小时,它会使用同步线程将内容发送到密码的密码,如下所示:

    public class KeyStrokeBuffer
{
  private CharBuffer buffer;
  private static final int BUFFER_SIZE = 5;

  Scanner sc;

  public KeyStrokeBuffer ()
  {
    this.buffer  = CharBuffer.allocate(BUFFER_SIZE);
    sc = new Scanner(System.in);
  }

  public void add (String s){
    int pointer = 0;
    while (pointer < s.length() &&  buffer.length() >0){
        buffer.put (s.charAt(pointer));
        pointer++;
        s.substring(1);
    }
    if (pointer != s.length()) { //This is for make the string sended always in the same size
        cipher (buffer); //This launched like a synchronized thread 
        buffer = CharBuffer.allocate(BUFFER_SIZE); 
        add(s);
    }
  }

  public void cipher (CharBuffer buffer){
    System.out.println ("Dentro cypher");
  }

第二种方法创建一个以LinkedList作为缓冲区的类。在此类中,线程休眠例如2秒,如果不为空,则将链接列表发送到密码。 同时,此类的方法将字符串添加到链接列表。所以我们有一个线程,每隔“x”时间发送一次链表,并有一个函数将字符串添加到这个链表中。

我还没有实现这个。

在Cipher中,我们必须知道要加密的每个块必须具有特定的宽度,才能正确解密。 另一件事是,如果很多线程处理繁重。

此外,我在这篇文章中找到了一个可能的解决方案: How to append to AES encrypted file