小编tem*_*emp的帖子

加密连续/小UDP数据的最佳实践

我有一个应用程序,我必须使用UDP通过网络每秒发送几个小数据.应用程序需要实时发送数据(无需等待).我想加密这些数据并确保我所做的事情尽可能安全.

由于我使用的UDP,没有办法使用SSL/TLS,所以我有,因为协议是无连接/不可靠/不受监管的每个数据包加密孤单.

现在,我使用从用户密码派生的128位密钥,AES CBC模式(PBE使用AES-CBC).我决定使用带密码的随机盐来获取128位密钥(防止对密码短语的字典攻击),当然还要使用IV(以防止对数据包进行统计分析).

不过,我很担心几件事情:每个数据包中含有少量的数据(比如一对夫妇每包的整数值),这将使得加密的数据包受到已知明文攻击(这将导致更容易破解密钥) .此外,由于加密密钥是从口令派生,这将使密钥空间的方式少(​​我知道盐可以帮助,但我通过网络发送一次盐,任何人都可以得到它).鉴于这两件事,任何人都可以嗅探并存储发送的数据,并尝试破解密钥.虽然这个过程可能需要一些时间,但一旦密钥被破解,所有存储的数据都将被解密,这对我的应用程序来说将是一个真正的问题.

所以我的问题是,使用无连接协议(UDP)发送/加密连续小数据的最佳做法是什么?我的方式是最好的方式吗?...流入?...矫枉过正?

请注意,我不是要求100%安全的解决方案,因为没有这样的事情.

encryption udp

21
推荐指数
1
解决办法
2万
查看次数

Windows中的JNA键盘挂钩

我已经整理了一个JNA代码,用于在Windows中安装键盘钩子(使用JNA示例).代码编译和一切,我得到了钩子安装(我成功地处理了钩子),我也可以成功卸载钩子.但是,当我按下键盘上的任意键时,回调永远不会被调用.这是我的代码(大部分是从JNA示例中获得的类型定义,直接转到"main"部分)

import com.sun.jna.IntegerType;
import com.sun.jna.Pointer;
import com.sun.jna.PointerType;
import com.sun.jna.Structure;
import com.sun.jna.FromNativeContext;
import com.sun.jna.ptr.IntByReference;
import com.sun.jna.ptr.PointerByReference;
import com.sun.jna.win32.StdCallLibrary;
import com.sun.jna.win32.StdCallLibrary.StdCallCallback;
import com.sun.jna.Native;
import com.sun.jna.Platform;
import com.sun.jna.Library;
import com.sun.jna.win32.W32APITypeMapper;
import com.sun.jna.win32.W32APIFunctionMapper;

import java.util.Map;
import java.util.HashMap;

public class HelloWorld {
    static Map UNICODE_OPTIONS = new HashMap() {
        {
            put("type-mapper", W32APITypeMapper.UNICODE);
            put("function-mapper", W32APIFunctionMapper.UNICODE);
        }
    };

    public static class LONG_PTR extends IntegerType {
        public LONG_PTR() { this(0); }
        public LONG_PTR(long value) { super(Pointer.SIZE, value); }
    }

    public static class UINT_PTR extends IntegerType {
        public UINT_PTR() …
Run Code Online (Sandbox Code Playgroud)

java windows keyboard-hook jna

13
推荐指数
1
解决办法
2万
查看次数

标签 统计

encryption ×1

java ×1

jna ×1

keyboard-hook ×1

udp ×1

windows ×1