我们如何在不使用任何给定库(如Base64、AES等)的情况下用java创建自己的字符串编码解码或加密解密脚本?
我们如何在不使用任何给定库(如Base64、AES等)的情况下用java创建自己的字符串编码解码或加密解密脚本我们如何在不使用任何给定库(如Base64、AES等)的情况下用java创建自己的字符串编码解码或加密解密脚本?,java,security,encryption,encoding,cryptography,Java,Security,Encryption,Encoding,Cryptography,我们如何在不使用任何给定库(如Base64、AES等)的情况下用java创建自己的字符串编码解码或加密解密脚本 根据我的客户要求,他希望用户可以决定用同一用户再次选择的字母/数字替换特定字母/数字。所以我想确认一下,有没有这样做的可能性?任何建议都将不胜感激 维护keyValue的HashMap将替换为要替换的值,只需使用简单函数更改字符串即可 import java.util.HashMap; import java.util.Map.Entry; public class Encrypt {
根据我的客户要求,他希望用户可以决定用同一用户再次选择的字母/数字替换特定字母/数字。所以我想确认一下,有没有这样做的可能性?任何建议都将不胜感激 维护keyValue的HashMap将替换为要替换的值,只需使用简单函数更改字符串即可
import java.util.HashMap;
import java.util.Map.Entry;
public class Encrypt {
/**
* @param args
*/
static HashMap<String, String> hm = new HashMap();
public static void main(String[] args) {
// TODO Auto-generated method stub
hm.put("a", "b");
hm.put("b", "c");
hm.put("c", "d");
hm.put("d", "e");
hm.put("e", "f");
hm.put("f", "g");
hm.put("g", "h");
hm.put("h", "i");
hm.put("i", "j");
hm.put("j", "k");
hm.put("k", "l");
hm.put("l", "m");
hm.put("m", "n");
hm.put("1", "4");
hm.put("2", "3");
hm.put("3", "2");
hm.put("4", "1");
hm.put("5", "0");
String input = "this is a simple text";
String text = encode(input);
System.out.println(text);
System.out.println(decode(text));
}
private static String decode(String input) {
// TODO Auto-generated method stub
StringBuffer output = new StringBuffer();
for(int i = 0; i < input.length(); i++)
{
String ch = input.charAt(i)+"";
if(hm.containsValue(ch))
{
for (Entry<String, String> entry : hm.entrySet()) {
if (entry.getValue().equals(ch)) {
output.append(entry.getKey());
}
}
}
else
{
output.append(ch);
}
}
return output.toString();
}
private static String encode(String input) {
// TODO Auto-generated method stub
StringBuffer output = new StringBuffer();
for(int i = 0; i < input.length(); i++)
{
String ch = input.charAt(i)+"";
if(hm.containsKey(ch))
{
output.append(hm.get(ch));
}
else
{
output.append(ch);
}
}
return output.toString();
}
}
编辑
这是不建议的,因为如果有人打破了顺序,他可以很容易地知道所有的文本 这是一个密码,任何安全性都不应被信任。@Seiyria,你能解释一下…为什么吗?维护一个键的哈希映射值被替换为一个值要替换的值,只需使用一个简单的函数更改字符串即可。@UmaKanth感谢你的建议,这样我们就可以进行编码/加密,完美……但解码/解密将如何进行?你能给我看一些示例代码吗……因为我还不是java高手!但是客户的要求让我很痛苦。谢谢你的支持…让我试试。非常感谢这与Vigenère密码具有相同或更低的安全性。如果这是可以接受的,那么你的客户必须仍然生活在文艺复兴时期。单替换密码被认为是经典密码是有原因的。我同意@maarteenbodewes,这很容易被破解。我不知道你的客户想要什么,但是DES,SHA被认为是最好的,实际上是不可能破解的。然而DES和SHA只是上个世纪的事,所以我们离现在越来越近了。现在是AES和SHA-2,使用经过身份验证的加密。SHA-3几乎是标准化的,但现在还没有理由切换。不,明确表示我也使用了其他的加密…比如在1级,数据将首先使用客户端指定的方法进行加密,然后在第二级使用其他加密方法。数据将存储在应用程序数据库中,之后在最后一级加密中,我将再次加密数据,然后将其保存到服务器数据库中。因此,它有3级数据保护。说到客户,我的客户对我们通常使用的加密方法不满意……他想要一些可以选择第一级加密的东西。