Java 尝试将字符数组的元素转换为int时出错
以下是我迄今为止使用的代码:Java 尝试将字符数组的元素转换为int时出错,java,arrays,numberformatexception,Java,Arrays,Numberformatexception,以下是我迄今为止使用的代码: public static String encrypt(String password) { String encrypted = null; char passChars[] = password.toCharArray(); int ascii[] = null; for(int i=0;i<passChars.length;i++) { ascii[i] = Integer.parseInt(String
public static String encrypt(String password) {
String encrypted = null;
char passChars[] = password.toCharArray();
int ascii[] = null;
for(int i=0;i<passChars.length;i++) {
ascii[i] = Integer.parseInt(String.valueOf(passChars[i]));
ascii[i] = ascii[i] + 17;
passChars[i] = (char)ascii[i];
encrypted = encrypted + String.valueOf(passChars[i]);
}
return encrypted;
}
我尝试过改变一些事情,比如改变它从char转换为int的方式,但似乎没有任何效果。。。我做错了什么?如果您想通过将每个字符偏移一定量来加密字符串,那么直接执行以下操作:
String encrypted = null;
char passChars[] = password.toCharArray();
for (int i=0; i < passChars.length; i++) {
passChars[i] += 17;
}
encrypted = new String(passChars);
请注意,在某些ASCII字符中添加17可能会导致无法打印的内容。现在还不清楚你想在这里实现什么;如果您想要系统地将密码加扰到其他字符中,那么我们可能必须使用模数进行换行。这一行是错误的:
ascii[i] = Integer.parseInt(String.valueOf(passChars[i]));
您正在尝试将密码的字母转换为整数。无法保证密码仅由数字组成
相反,您可以执行以下操作:
ascii[i] = passChars[i] + 17;
直接。使用有效大小初始化ascii[]否则您可能会得到索引越界异常,此程序将仅对密码作为数字字符串工作。我想加密密码,以便将其存储在数据库中。不过这只是一个原型。。。感谢you@MilanJ下一步,您可以考虑基础64编码您的密码。除此之外,我们还可以讨论使用salt进行正式加密之类的问题。
ascii[i] = passChars[i] + 17;