隐藏String
的最佳方法是什么?出于学习目的,我决定更深入地研究Java序列化,其中大部分都很好。然而,当我试图将简单的模糊应用于字符串值时,我遇到了这个奇怪的问题。
情况分解:我正在寻找"模糊"不加密从配置文件创建框架传递的某些数据。添加简单的噪音到所有配置文件的详细信息,如配置文件用户名,密码,姓名,姓氏等
期望的结果是简单的,有时工作,有时它只是错过某些字符。例子:
配置文件名称:"John"然后变成"~nh#j@o^",当然再消隐回"John"
问题在隐晦的部分表现出来。我正在打印结果以检查是否一切正常,而不是"John",它将失去某些字符(1-2)并继续添加字符,如下所示:
配置文件名称: "John"然后变成"~n#j@o^ "然后去模糊化为"Jon"
这是个奇怪的问题。我看了一下周围的文章,模仿了一下模糊的风格,这样我就不会太偏离了。
下面是一个例子,我的个人资料名称是如何隐藏的:
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.t getname()提取到本地变量中,以确保您正在使用相同的name
实例看看Jetty是怎么做的:https://gist.github.com/slevental/0c902da60a1f6f931420