gpt4 book ai didi

java - 通过 JSON 传递非数字/字母的字符串

转载 作者:行者123 更新时间:2023-12-01 14:59:23 25 4
gpt4 key购买 nike

我通过 json 和查询字符串传递加密密码。举例来说,密码类似于:V0VuDF9ITK+A744HD=

当我通过 json 传递字符串时,我使用 JSON.stringify 来字符串化字符串,以便可以在服务器上使用它。

var request = sb.serverRequest('changePassword', JSON.stringify({username: username, password: credentialsInput.value, original: password}));
request.done(function() {
var response = JSON.parse(request.responseText);
if(response.success) {
console.log('password changed');
} else {
setInstructions('That didn\'t work. Please try again.');
}
credentialsInput.value = ''; //Clear input
});

但是,当我尝试在服务器上使用密码时,它已将 + 替换为空格,因此新密码将为 V0VuDF9ITK A744HD= (请注意空格在中间)?如何在java中预先解析字符串,使其包含传递的实际字符串中的非字母和数字?似乎将字符串传递给 javascript 就可以了,但如果可能的话,我更喜欢在 java 中进行预处理,因为在某些情况下我会通过查询字符串传递字符串。

我使用java中的base64编码器进行加密,所以我不确定在javascript中转义字符串中的字符时是否需要考虑任何其他可能性。看来 = 顺利通过了。此编码类型使用的任何其他字符是否可能会成为问题?

附注我实际上并没有在 javascript 中进行任何加密,这一切都在服务器上处理,但在这个特定的实例中,我需要 javascript 中的加密密码,因为我需要在服务器端比较它......我不会陷入所有无聊的事情细节。不过,我还将通过查询字符串传递此加密密码,我认为该查询字符串会因 += 出错。我如何在查询字符串中传递类似的字符串?

更新:我用来加密密码的编码算法如下。我可能误认为它只是base64。这是保护密码的安全方法吗?

public static synchronized String encrypt(String plainText) throws RuntimeException {
MessageDigest md = null;

try{
md = MessageDigest.getInstance("SHA");
}catch(NoSuchAlgorithmException e){
throw new RuntimeException(e.getMessage());
}

try{
md.update(plainText.getBytes("UTF-8"));
}catch(UnsupportedEncodingException e){
throw new RuntimeException(e.getMessage());
}

byte raw[] = md.digest();
String hash = (new BASE64Encoder().encode(raw));
return hash;
}

最佳答案

要使字符串能够安全地通过 URL,请使用 encodeURIComponent(your_string_here)

关于java - 通过 JSON 传递非数字/字母的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13894157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com