0

当我尝试分成两部分时收到此错误消息(使用“断点”字符“@”)

  • part_fixed
  • 部分用户

    保存为字符串的密钥 “最终密钥” 。

           service_codeEncrypted_key = new SecretKeySpec(service_codeEncrypted, 0, 8, "DES");
    
    
            System.out.println("");
            System.out.println("Secret code as secret key :" + service_codeEncrypted_key);
            System.out.println("");
            String final_key = "service_codeEncrypted_key";//key has the form xxx.xxx.xxx.xxx@yyyyy
            String[] parts = final_key.split("@") ;
            String part_fixed = parts[0]; // xxx.xxx.xxx.xxx
            String part_user = parts[1]; // yyyy
            System.out.println("");             
            System.out.println("Service Code decrypted : " + new String(service_codeDecrypted)); // Print the decrypted Text
            System.out.println("");
            // System.out.println("Code for the card : " + part_user); // Print the decrypted Text          
            System.out.println("Finish!!!"); // Print the decrypted Text
            System.out.println("-----------------------------------------------------------------------------------"); // Print the decrypted Text
            System.out.println("");
            System.out.println("");
    

控制台中显示的错误如下:

线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException: 0 在 JEncrytion.main(JEncrytion.java:182)

其中第 182 行是: String part_fixed = parts[0];

acual 键的格式为 xxx.xxx.xxxxxx.xxx@yyyyy,我希望所有 x 都在一个部分中,所有 y 在第二个部分中。

有任何想法吗?

4

4 回答 4

1

String final_key = "service_codeEncrypted_key";// 这里是问题

替换为以下内容

String final_key = service_codeEncrypted_key; 

并考虑这个

   String part_fixed ="";
   String part_user ="";
   if(parts!=null){
       part_fixed = parts[0]; // xxx.xxx.xxx.xxx
       part_user = parts[1]; // yyyy
   }
于 2013-09-25T09:42:11.577 回答
0

final_key(value = "service_codeEncrypted_key") 字符串不包含@,因此结果split 将是单个元素的数组,即原始字符串。因此,如此处所述,访问该数组中的第二个元素:

parts[1]; 

将抛出 ArrayIndexOutOfBoundsException

您的代码中的逻辑问题是您想将service_codeEncrypted_key变量分配给final_key但您执行了字符串分配。因此,正如Prabhakaran在他的回答中提到的,将其替换为:

String final_key = "service_codeEncrypted_key";

String final_key = service_codeEncrypted_key;
于 2013-09-25T09:42:04.010 回答
0

没错,您的密钥不包含“@”符号。

你需要编写这样的代码。

if(final_key.contains("@")){
String[] parts = final_key.split("@") ;
    String part_fixed = parts[0]; // xxx.xxx.xxx.xxx
    String part_user = parts[1]; // yyyy
}
于 2013-09-25T09:44:10.557 回答
0
String final_key = "service_codeEncrypted_key";

不包含@字符,因此parts[]没有元素。

尝试使用

String[] parts = service_codeEncrypted_key.split("@");
于 2013-09-25T09:44:10.767 回答