什么';s隐藏字符串的最佳方法(Java序列化) 隐藏字符串的最佳方法是什么

什么';s隐藏字符串的最佳方法(Java序列化) 隐藏字符串的最佳方法是什么,java,swing,security-by-obscurity,Java,Swing,Security By Obscurity,出于学习目的,我决定进一步深入研究Java序列化,其中大部分内容都很好。然而,我在尝试对字符串值应用简单的模糊处理时遇到了这个奇怪的问题 情况分解: 我希望“模糊”不加密从概要文件创建框架传递的某些数据。向所有配置文件详细信息(如配置文件用户名、密码、名称、姓氏等)添加简单干扰 所期望的结果很简单,有时会起作用,有时甚至会忽略某些字符。例如: 配置文件名称:然后将“John”改为“~nh”#j@o^当然,他又回到了“约翰” 这个问题出现在模糊的部分。我正在打印结果,以检查是否一切正常,而不是“J

出于学习目的,我决定进一步深入研究Java序列化,其中大部分内容都很好。然而,我在尝试对字符串值应用简单的模糊处理时遇到了这个奇怪的问题

情况分解: 我希望“模糊”不加密从概要文件创建框架传递的某些数据。向所有配置文件详细信息(如配置文件用户名、密码、名称、姓氏等)添加简单干扰

所期望的结果很简单,有时会起作用,有时甚至会忽略某些字符。例如:

配置文件名称:然后将“John”改为“~nh”#j@o^当然,他又回到了“约翰”

这个问题出现在模糊的部分。我正在打印结果,以检查是否一切正常,而不是“John”,它将丢失某些字符(1-2)并继续添加字符,如下所示:

配置文件名:然后将“John”改为“~n”#j@o^然后又回到“乔恩”

这是一个奇怪的问题。我在文章中四处寻找,有点“模仿”模糊的风格,这样我就不会失去联系

下面是一个如何模糊我的个人资料名称的示例:

                String nFirstCut = p.getName().substring(0, nSplit); //The first 'slice'
                String nSecondCut = p.getName().substring(nSplit+1, nSplit*2); //The second 'slice'
                String nThirdCut = p.getName().substring(nSplit*2+1); //The third 'slice'

                /*
                 * New Obscured name is now - second 'slice' + randomCharacter + first 'slice'
                 * + randomCharacter + third 'slice'
                 */
                String nObcName = nSecondCut + obcChars[q] + nFirstCut
                        + obcChars[r] + nThirdCut + obcChars[s];
                p.setName(nObcName);

注意:nSplit是简单的getName()的长度除以3(以生成3个“切片”)


还有,我想补充一下。当试图从JPasswordField#getPassword()而不是JTextField#getText()隐藏密码时,情况更糟。不确定为什么其中一个看起来像并发问题,也许您可以尝试将方法调用p.getName()提取到局部变量中,以确保您使用的是相同的name实例


看看Jetty是如何做到这一点的:

是的,我已经试过了。该方法以for each的形式重复,同时遍历序列化的概要文件。在没有干扰的情况下调试它时,它工作得很好。您是否尝试使用锁同步该方法,以确保这不是竞争条件?我正在查看该链接。谢谢你的发帖!我已经试过了。到目前为止,模糊效果比我所要求的要大。这个链接非常有用。我仍然需要取消订阅并确保所有字符都正确返回为什么简单的base64编码方案不适用于这里?“模糊和加密”之间的区别在这里充其量只能说是定义得很差。对不起,我没有大多数人那么渊博,我还在学习。因此,为什么我的问题标题明确(与我对模糊和加密的区别相反)说明了这方面的“最佳”方法。我从来没有说过你的编码方案不起作用,我只是说我不知道该用什么。希望这能澄清问题,我相信标准JDK中提供了base64编码。它接受一个字节数组/字符串或任何东西,返回一个编码的字节数组,并对其进行解码。Base64只是一个简单的加密提供程序。对于简单的加密任务很有用,可能非常适合这样的东西。啊,非常好,我不知道,谢谢!我正在查看下面答案中留下的Stanislav链接。如果您有时间,我恳请您检查一下,并告诉我您对它的想法,我是否应该使用Base64编码或链接中提供的方法-