手动加密

问题描述 投票:0回答:3

我想将安全数据(字符串)从客户端发送到服务器。这就是我想我想做的:

  • 将字符串转为字节数组
  • 通过以特定方式打乱字节来“打乱”字节
  • 序列化类内部的字节数组
  • 将加密和序列化的类发送到服务器

然后服务器会:

  • 反序列化类
  • 获取字符串的字节
  • 按正确的顺序放置字节
  • 用字节创建一个字符串

这是手动加密数据的好方法吗?这安全吗?是否值得花时间尝试制作手动加密器?

java encryption
3个回答
4
投票

听起来您正在尝试使用双方都知道的固定密钥(您扰乱字节的“特定方式”)来推出自己的对称加密方案。与简单地使用具有已知密钥的内置加密方案相比,这样做没有任何优势,并且存在很大的潜在缺点。只需一个小的实施错误就可以创建一个可供恶意用户利用的漏洞。

除非您以加密为生,否则您无法做得比现有的、已知的和经过现场验证的技术更好(AES是一个好的开始)。如果安全对您很重要,请不要尝试。不过,如果您想将实验作为一种爱好,那就尽情享受吧。


2
投票

这是一种加密数据的方法吗?

如果您只是“扰乱”数据,则不会。如果明文只是被扰乱,那么重建明文是“微不足道的”。 (这意味着第一次有人想要读取数据时,他们可能会这样做,但如果他们不太努力,他们不会偶然发现它。)

另一方面,如果您随后对其运行“真正的”加密算法,则加扰对解密的难度增加可以忽略不计,但您依赖于简单的加扰足以减慢某人的速度破解了“真正的”加密,这似乎不太值得。

您可能会更好地坚持使用经过充分测试的加密机制,该机制是由以使用非常大的素数进行数学为生的人设计的。 Java的加密框架可以让你相当容易地实现公钥/私钥系统,或者双盲密钥交换系统;例如,您可以只使用 HTTP-SSL 进行数据交换,而无需进行太多设置。


0
投票

不,杂乱不是很好。对于一个简单的方案,您可以在检查 XOR 运算符的基础上构建。

© www.soinside.com 2019 - 2024. All rights reserved.