当前位置: 首页 > 知识库问答 >
问题:

如何检查输入字符串是否编码?

弓方伟
2023-03-14
new String(Base64.getDecoder().decode(inputStr), StandardCharsets.UTF_8);
public class AppTest {

    public static void main(String[] args) {
        String inputStr = "admin123";
        System.out.println("isEncoded: " + isEncoded(inputStr));
    }

    private static boolean isEncoded(String inputStr) {
        try {
            new String(Base64.getDecoder().decode(inputStr), StandardCharsets.UTF_8);
            return true;
        } catch (Exception e) {
            return false;
        }
    }
}

你能帮我检查任何替代代码来检查我的输入字符串是否已编码?

共有1个答案

阳光辉
2023-03-14

Base64与加密无关。是关于编码的。Base64不会将您的输入变成只有当您知道某个秘密密钥时才能解密的东西。不,Base64编码的目的是确保二进制信息可以安全地表示为ASCII字符集(更多细节请参见此处)。有时Base64与加密一起使用:您首先对消息进行加密,然后使用Base64对其进行编码:因为与发送任意二进制数据相比,通过网络发送ASCII字符不那么复杂。

现在:您的两个字符串“123456”和“ADMIN123”仅使用ASCII字符,因此使用Base64编码是没有意义的。或者准确地说:因为“全部ASCII”,解码不会抛出一个错误。

因此:您的方法isEncrypted()应该因此重命名为isEncoded()。而且正如RealSkeptic正确指出的,decode()方法将(仅)在输入字符串不在Base64中时抛出InvalidArgumentException。(假设我们谈论的是“内置”base64.decoder类)

 类似资料:
  • 问题内容: 如何检查,如果用户的字符串输入是一个数字(例如等)? 上面的方法不起作用,因为input总是返回一个字符串。 问题答案: 只需尝试将其转换为,然后在无法正常工作时对其进行救助。

  • 我试图检查用户是否输入了字符串。如果用户输入了字符串,我的程序应该输出错误消息。如果用户输入了整数,我的程序应该继续运行 这是我到目前为止的代码,我需要添加另一个条件来检查用户是否输入字符串,我尝试了一些方法,但它们不起作用

  • 我有以下代码,其中包含try... catch操作,用于检查它是否是字符串。但是,无论输入如何,它都不会抛出异常。我希望它做的是检查输入是否是文本,例如“Nick”,如果不是,则抛出异常并提示用户重试。

  • 问题内容: 我想检查我的字符串是否包含+字符。我尝试了以下代码 但是它没有给出预期的结果。 问题答案: 您需要此: 类的方法不使用正则表达式作为参数,而是使用普通文本。 编辑: 输出:

  • 问题内容: 我想测试输入的String是否平衡。如果有匹配的左,右括号,括号或花括号,则将是平衡的。 我在选择做什么时遇到问题。我是否应该将每个左括号或右括号,方括号或大括号放在堆栈中,然后弹出它们?如果我将它们弹出,那对我有什么帮助? 问题答案: 1)对于每个开口支架:将其推入堆栈。 2)对于每个右括号:从堆栈中弹出并检查括号的类型是否匹配。如果不退货; 即 String中的当前符号是,如果从堆

  • 我想测试输入字符串是否平衡。如果有一个匹配的开始和结束括号、括号或大括号,这将是平衡的。 我在选择做什么时遇到了问题。我是否应该将每个开始或结束的括号、括号或大括号放在一个堆栈中,然后将它们弹出?如果我把它们拿出来,这对我有什么帮助?