有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用JAVA将AES对称密钥作为字符串传递

为什么以下测试失败

KeyGenerator generator = KeyGenerator.getInstance("AES");
SecretKey key = generator.generateKey();
byte[] symKey = key.getEncoded();
String keyAsString = new String(symKey, Charset.forName("UTF-8"));
byte[] supposedSymKey = keyAsString.getBytes(Charset.forName("UTF-8"));
Assert.assertEquals(symKey.length, supposedSymKey.length);

假定的symKeysymKey的内容是不同的? 将符号键转换为字符串的正确方法是什么,以便分发它? 谢谢


共 (1) 个答案

  1. # 1 楼答案

    尝试base64编码/解码:

    KeyGenerator    generator       = KeyGenerator.getInstance( "AES" );
    SecretKey       key             = generator.generateKey();
    byte[]          symKey          = key.getEncoded();
    String          buffer          = DatatypeConverter.printBase64Binary( symKey );
    byte[]          supposedSymKey  = DatatypeConverter.parseBase64Binary( buffer );